home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / basic / qwez40.zip / WIND_REZ.DOC < prev   
Text File  |  1990-10-30  |  146KB  |  4,224 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.                                 WINDOWS R-E-Z
  27.                                 VER. 4.00
  28.  
  29.  
  30.                                 CONNECT Software
  31.                                 6192 Fawn Meadow
  32.                                 Farmington, NY   14425
  33.  
  34.                                 Richard Magnanti
  35.                                 (716) 924-3439
  36.  
  37.                                 CPS:    71020,2040
  38.                                 GENIE:  R.MAGNANTI
  39.                                 DELPHI: MAGNANTI
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.                                COPYRIGHT (c) 1988, 1989, 1990 BY:
  57.                                CONNECT Software
  58.                                ALL RIGHTS RESERVED
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.                                     CONTENTS
  74.  
  75.           Differences in versions of WINDOWS R-E-Z ----------------- 1
  76.  
  77.           Making executable programs. ( unenhanced PDS version ) --- 2
  78.  
  79.           General overview ( list of procedures included ) ------- 3-5
  80.  
  81.           System and programming requirements ---------------------- 5
  82.  
  83.           Windowing routines ------------------------------------ 6-13
  84.                    The Active Window ------------------------------- 6
  85.              1.00  SETWIND --------------------------------------- 6-7
  86.              1.01  MAKEWIND -------------------------------------- 7-8
  87.              1.02  CHNGWIND ---------------------------------------- 9
  88.              1.03  PRINTW ------------------------------------------ 9
  89.              1.04  SAVEWIND ------------------------------------- 9-10
  90.              1.05  RESAVE -------------------------------------- 10-11
  91.              1.06  RSTRWIND --------------------------------------- 11
  92.              1.07  DELWIND ---------------------------------------- 11
  93.              1.08  CLRWIND ---------------------------------------- 11
  94.              1.09  NEWCOLOR ------------------------------------ 11-12
  95.              1.10  LINEW ------------------------------------------ 12
  96.              1.11  WINDSTATUS ---------------------------------- 12-13
  97.  
  98.           Pulldown windows ------------------------------------- 14-17
  99.              2.00  SETPULL ------------------------------------- 14-15
  100.                    SETPULL example ----------------------------- 15-16
  101.              2.01  PULLDOWN ------------------------------------ 16-17
  102.              2.02  CHNGPULL --------------------------------------- 17
  103.  
  104.           Scroll windows --------------------------------------- 18-27
  105.              3.00  SCRLWIND ------------------------------------ 18-21
  106.                    SCRLWIND example ( Auto-exit ) ----------------- 22
  107.                    SCRLWIND example ( Multiple scroll windows )- 23-26
  108.              3.01  MARKED% ------------------------------------- 26-27
  109.  
  110.           Get answer routine ----------------------------------- 28-29
  111.              4.00  GETANS -------------------------------------- 28-29
  112.  
  113.           Input routines --------------------------------------- 30-39
  114.              5.00  INPTWIND ------------------------------------ 30-32
  115.              5.01  SETINPT ------------------------------------- 32-34
  116.                    SETINPT example ----------------------------- 34-35
  117.              5.02  MULTINPT ------------------------------------ 35-38
  118.                    Editing features for input routines ------------ 39
  119.  
  120.           Directory routines ----------------------------------- 40-43
  121.              6.00  GETDISK ---------------------------------------- 40
  122.              6.01  FINDPATH --------------------------------------- 40
  123.              6.02  SETDISK ------------------------------------- 40-41
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  Copyright (c) 1988,1989,1990 By: CONNECT Software  All Rights reserved.
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.              6.03  DISKSIZE --------------------------------------- 41
  139.              6.04  FINDDIR ------------------------------------- 41-43
  140.                    A directory scroll window ( example ) ------- 44-45
  141.  
  142.           Sound Routine ------------------------------------------- 45
  143.              7.00  DOSOUND ---------------------------------------- 45
  144.  
  145.           Program format --------------------------------------- 46-49
  146.  
  147.           Making a customized library -------------------------- 50-51
  148.  
  149.           Description of files --------------------------------- 52-53
  150.  
  151.           Errors ----------------------------------------------- 54-57
  152.  
  153.           Appendix --------------------------------------------- 58-60
  154.              Color attribute chart -------------------------------- 58
  155.              Multi-field code chart ------------------------------- 59
  156.              Border designation chart ----------------------------- 60
  157.  
  158.           Restrictions and disclaimer ----------------------------- 61
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  Copyright (c) 1988,1989,1990 By: CONNECT Software  All Rights reserved.
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.                             ***************************
  206.                             *  NOTE ------ READ THIS! *
  207.                             ***************************
  208.  
  209.               The information in this documentation refers to the
  210.           enhanced version of WINDOWS R-E-Z.  Differences between the
  211.           QuickBasic ( 4.00, 4.00b and 4.50 ) and the BASIC 7.+ (PDS)
  212.           versions are detailed.  The documentation can be used for the
  213.           unenhanced versions with the following exceptions.
  214.  
  215.  
  216.               1. MULTI-FIELD INPUT SCREENS - A maximum of 2 input
  217.           screens with a maximum of 25 fields per screen are available
  218.           in the unenhanced version.  This compares to 10 multi-field
  219.           screens with up to 100 fields each, in the enhanced version.
  220.  
  221.               2. MEMORY - The code in the unenhanced libraries is not
  222.           modular.  Therefore executable programs made with the unen-
  223.           hanced libraries will contain all of the code even though
  224.           all of the procedures are not used.  This will substantially
  225.           increase the length of any executable file and program.
  226.               With the enhanced versions of WINDOWS R-E-Z, it is not
  227.           necessary to link modules to executable programs if routines
  228.           in a module are not used by the program.  Much smaller ex-
  229.           ecutable programs are consequently possible.
  230.               An additional library is included in the enhanced
  231.           versions which does not contain error checking or window
  232.           status capability.  This library can be used after the
  233.           program is de-bugged and also represents an opportunity for
  234.           considerable memory reduction.
  235.  
  236.               3. The section labeled "MAKING A CUSTOMIZED LIBRARY"
  237.           refers to the enhanced version of WINDOWS R-E-Z.
  238.  
  239.  
  240.           **********************************************************
  241.           **  For information on obtaining the enhanced version   **
  242.           **  of WINDOWS R-E-Z see the file ORDER.ME.             **
  243.           **********************************************************
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                                   1                                   
  262.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.                *** Making Executable Programs - BASIC 7.0 ***
  272.                         ( UNENHANCED VERSION ONLY )
  273.  
  274.           ============================================================
  275.           The library in the unenhanced, BASIC 7.+, version of WINDOWS
  276.           R-E-Z  was made using BASIC 7.1.  If you are using BASIC 7.0
  277.           the following message will appear when making executable
  278.           programs from within the QBX environment.
  279.  
  280.           LINK WARNING L4051: BRT71EFR.LIB: CANNOT FIND LIBRARY
  281.           Enter new file spec:
  282.  
  283.           Press ENTER or RETURN.  The file, BRT71EFR.LIB, is not
  284.           required.
  285.  
  286.           The enhanced version of WINDOWS R-E-Z supplies libraries
  287.           for BASIC 7.0 and BASIC 7.1.  QuickBasic 4.+ does not
  288.           require separate libraries for each version.
  289.           ============================================================
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                   2                                   
  328.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.                             *** GENERAL OVERVIEW ***
  338.  
  339.               WINDOWS R-E-Z is a collection of QuickBASIC and assembly
  340.           routines which provide users of QuickBASIC ver. 4.00+ and
  341.           BASIC 7.0+ ( PDS ) with a complete window management system.
  342.           With WINDOWS R-E-Z users can make, save, restore, and delete
  343.           up to twenty windows.  The memory used to save windowed
  344.           areas is dynamically allocated and outside of basic's normal
  345.           data storage area leaving more room for the basic programs
  346.           data.  Windows are assigned a number from zero to twenty.
  347.  
  348.               "INPUT WINDOWS" and "MULTI-FIELD INPUT" routines are
  349.           also provided.  "INPUT WINDOWS" provide a convenient means
  350.           to prompt for, and receive an input.  "MULTI-FIELD INPUT"
  351.           allows users to define up to 10 input screens, each having up
  352.           to 100 input fields.  Numerous options are included for
  353.           input fields.
  354.  
  355.               WINDOWS R-E-Z provides users the ability to incorporate
  356.           "PULLDOWN WINDOWS", emulating those used in the QuickBASIC
  357.           programming environment, in their programs.
  358.  
  359.               Directory routines find the default drive and path, disk
  360.           size and free space, and directory listing for any path.
  361.           File size, date, time, and attributes can also be found.
  362.  
  363.               Several other routines are included which allow the use
  364.           of "GET ANSWER WINDOWS" and "SCROLL WINDOWS".
  365.  
  366.               All of the routines require a minimal amount of initial-
  367.           ization and the resulting programs present a professional
  368.           appearance.
  369.  
  370.               Unlike many other basic "add-ons", WINDOWS R-E-Z
  371.           provides extensive error detection and reporting.
  372.  
  373.           Procedures included:
  374.  
  375.             SETWIND -------- Set up routine for windowing procedures.
  376.  
  377.             MAKEWIND ------- Makes a window.  Saves windowed area to
  378.                              window memory.  The window becomes the
  379.                              "active window".
  380.  
  381.             SAVEWIND ------- Saves a screen area to window memory.
  382.  
  383.             RESAVE --------- Saves the active window.
  384.  
  385.             RSTRWIND ------- Restores a window area to the display.
  386.  
  387.             DELWIND -------- Deletes a window area from window memory.
  388.  
  389.  
  390.  
  391.  
  392.  
  393.                                   3                                   
  394.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.             CHNGWIND ------- Changes the active window to another
  404.                              window.
  405.  
  406.             NEWCOLOR ------- Changes the print-to color of the active
  407.                              window for text printed by PRINTW.
  408.                              The print-to color is used by CLRWIND to
  409.                              clear the active window's interior.
  410.  
  411.             CLRWIND -------- Clears the interior of the active window.
  412.  
  413.             PRINTW --------- Prints text in the active window using
  414.                              the window's "print-to" color.
  415.  
  416.             LINEW ---------- Prints a line in the active window using
  417.                              the window's "print-to" color.
  418.  
  419.             SCRLWIND ------- Places a scrollable list in the active
  420.                              window.
  421.  
  422.             MARKED% -------- (FUNCTION) Returns position of marked
  423.                              items after a call to SCRLWIND.
  424.  
  425.             WINDSTATUS ----- Reports window memory status.
  426.  
  427.             SETPULL -------- Set up routine for pulldown windows.
  428.  
  429.             PULLDOWN ------- Makes pulldown windows.
  430.  
  431.             CHNGPULL ------- Changes the color of, and disables or
  432.                              enables an item in a pulldown window.
  433.  
  434.             INPTWIND ------- Makes an input field with an optional
  435.                              window.  The field can be edited by
  436.                              the user.
  437.  
  438.             SETINPT -------- Set up routine for multi-field input
  439.                              screens.
  440.  
  441.             MULTINPT ------- Places input fields on the screen as
  442.                              defined by a previous call to SETINPT.
  443.  
  444.             GETANS --------- Makes a get answer window or single line
  445.                              prompt.  Waits for a single key response.
  446.  
  447.             DOSOUND -------- Produces sound determined by SETWIND.
  448.  
  449.             GETDISK -------- Returns default disk drive.
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.                                   4                                   
  460.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.             SETDISK -------- Sets the default disk drive.
  470.  
  471.             FINDPATH ------- Returns default path for any drive ( cur-
  472.                              rent directory ).
  473.  
  474.             DISKSIZE ------- Returns disk size and free space.
  475.  
  476.             FINDDIR -------- Returns directory of any drive or path in
  477.                              an array.
  478.  
  479.             --------------------------------------------------------
  480.  
  481.                   ***  SYSTEM AND PROGRAMMING REQUIREMENTS ***
  482.  
  483.             COMPUTER:
  484.                IBM PC (XT or AT) or compatible computer.  One disk drive.
  485.  
  486.             VIDEO ADAPTER CARD:
  487.                MONO, CGA, EGA or VGA emulating CGA.
  488.  
  489.             PROGRAMMING LANGUAGE:
  490.                For the QB4.+ version;
  491.  
  492.                    QuickBASIC version 4.00 or greater.
  493.                     - Text mode
  494.  
  495.                For the BASIC 7.+ (PDS) version;
  496.  
  497.                    BASIC 7.0  or greater.
  498.                    - Text mode
  499.  
  500.                    - Requires use of "far strings". This is the default
  501.                      if executable programs are produced from within
  502.                      QBX.  If modules are compiled using BC on the command
  503.                      line ( outside of the QBX environment ) the /Fs option
  504.                      must be used.
  505.  
  506.                    - Expanded memory arrays are not permitted.  If QBX
  507.                      is started with the /Ea switch these arrays may be
  508.                      stored in expanded memory.
  509.  
  510.                    *  - Numeric arrays less than 16k in size.
  511.                    *  - Fixed length string arrays less than 16k in size.
  512.                    *  - User defined type arrays less than 16k in size.
  513.  
  514.                    When in doubt, do not use the /Ea switch.
  515.  
  516.             DOS: Version 2.1 or higher.
  517.  
  518.             * Microsoft Basic - BASIC language reference: P 401
  519.             -------------------------------------------------------
  520.  
  521.  
  522.  
  523.  
  524.  
  525.                                   5                                   
  526.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.                             USING WINDOWS R-E-Z
  536.  
  537.          THE ACTIVE WINDOW
  538.  
  539.          When a window is defined ( made ) the number assiged to it
  540.          by the programmer represents the area covered by the window.
  541.          The area is restored or deleted via it's "number".  Up to 20
  542.          window areas can be saved.  The memory used to save the
  543.          window areas is automatically managed by WINDOWS R-E-Z.
  544.  
  545.          Any time a window is made it becomes the "active" window. The
  546.          active window is used by the following routines.
  547.  
  548.               PRINTW --- Prints text in the active window.
  549.               LINEW ---- Prints a line in the active window.
  550.               SCRLWIND - Places a scrollable list in the active
  551.                          window.
  552.               CLRWIND -- Clears all text from the interior of the
  553.                          active window.
  554.               RESAVE  -- Saves the active window and any text in the
  555.                          active window.
  556.               NEWCOLOR - Changes the "print-to" color of the active
  557.                          window.
  558.  
  559.  
  560.          1.00 SETWIND (FAST%, SND%, SHAD%, NOHIFLAG%, ISDOT%)
  561.  
  562.               Description:   SETWIND must be called at least once in
  563.               any program using the routines in WINDOWS-R-E-Z, prior
  564.               to calling any windowing routines.  This procedure init-
  565.               ializes window memory.  It also sets the default window-
  566.               ing speed, sound, and window shadow color.  In addition
  567.               it determines how the pulldown window and scroll window
  568.               routines display high intensity characters.
  569.                              The first call to SETWIND initializes
  570.               window memory and sets the default parameters.  Subse-
  571.               quent calls to SETWIND will not affect window memory but
  572.               can be used to change the default parameters.
  573.  
  574.               Arguments:      FAST% is used to allow "fast" windowing
  575.               if a CGA video card, or emulation, is detected.  IF
  576.               FAST% = 0  window routines will be slower on computers
  577.               with CGA.  If FAST%  = 1 the window routines will be
  578.               "fast" on computers with CGA.  This may, however, cause
  579.               "snow" with certain CGA cards.  If a monochrome card is
  580.               detected all windowing is "fast" and FAST% has no
  581.               effect.
  582.  
  583.                                SND% determines which sound will be
  584.               generated by the routines.   If SND% = 1 a "CLICK" sound
  585.               will be generated.  If SND% = 2 will a "BEEP" sound will
  586.               be produced.  Any other value produces no sound.
  587.  
  588.  
  589.  
  590.  
  591.                                   6                                   
  592.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.                                SHAD% sets the color for window shad-
  602.               ows.  See the color attribute chart for details.  Set-
  603.               ting SHAD% to 7 works well for monochrome display while
  604.               setting SHAD% to 8 works well for color displays.
  605.  
  606.                                NOHIFLAG% tells the pulldown and scroll
  607.               window routines how to display high intensity "key"
  608.               characters.  If NOHIFLAG% = 0 and the key character's
  609.               color is set to a high intensity it is displayed as high
  610.               intensity.  If NOHIFLAG% = 1 high intensity "key"
  611.               characters are displayed in reverse video.  This is
  612.               appropriate for LCD displays that can not display high
  613.               intensity characters.   NOHIFLAG% affects "key" char-
  614.               acters only.  See PULLDOWN and SCRLWIND descriptions.
  615.  
  616.                                ISDOT% sets a period or comma for
  617.               the decimal designator.  If ISDOT% = 1 the decimal
  618.               designator is a period.  If ISDOT% <> 1 the decimal
  619.               designator is a comma.  This is appropriate for some
  620.               foreign users.
  621.  
  622.  
  623.          1.01 MAKEWIND (W%, LABEL$, TR%, LC%, WIDE%, NR%, ATTR%, BORBER%)
  624.  
  625.               Description:   Makes a window.  May also save a window-
  626.               ed area to window memory.  The window becomes the active
  627.               window.   Calls to PRINTW, LINEW, SCRLWIND, CLRWIND,
  628.               RESAVE, and NEWCOLOR refer to the active window.
  629.  
  630.               Arguments:   W% is the window number and must equal 0 to
  631.               20.  If W% = 0 the area under the window is not saved.
  632.               A window is simply made.  If W% is from 1 to 20 the area
  633.               under the window is saved and may be restored at a later
  634.               time via a call to RSTRWIND.  If W% is the number of a
  635.               previously saved window area the old window window area
  636.               (W%) is deleted and the new window area (W)% is saved.
  637.  
  638.                            LABEL$ is the text printed on the top
  639.               border or in the title box (see BORDER%) of the window.
  640.               By default the print starts on the second column.  If
  641.               the left character of LABEL$ ="@" the text will be
  642.               centered.  If LABEL$ is too long it will be truncated to
  643.               fit on the top border or in the title box.
  644.  
  645.                            TR% is the top row of the window.  If TR% =
  646.               100 the window will be centered from top to bottom.  TR%
  647.               can range from 1 to 23 or may equal 100.  Any other
  648.               value for TR% will result in a error.
  649.  
  650.                            LC% is the left column position of the win-
  651.               dow. If LC% = 100 the window will be centered from left
  652.               to right.  LC% can range from 1 to 78 if the display
  653.               width is 80 or from 1 to 38 if the display width is 40.
  654.  
  655.  
  656.  
  657.                                   7                                   
  658.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.                            WIDE% is the window's width.  WIDE% must be
  668.               greater than 2.  WIDE% + LC% -1 must not be greater than
  669.               the displays width ( 40 or 80 ).
  670.  
  671.                            NR% is the number of rows in the window and
  672.               must be greater than 2.  NR% + TR% must not be greater
  673.               than 26.  If NR% is less than 5 a window title box is
  674.               not permitted.
  675.  
  676.                            ATTR% is the windows colors and may be in
  677.               the range of 0 to 255.  The foreground ( windows label
  678.               and border ) color equals ATTR% MOD 16.  The background
  679.               color equals INT( ATTR% / 16 ). If the background color
  680.               is greater than 7 the foreground flashes and the back-
  681.               ground color equals background color - 8. If the fore-
  682.               ground and background colors are the same the border and
  683.               label will not be visible. ( See the Color Attribute
  684.               Chart.)  ATTR% becomes the print-to color for window W%.
  685.  
  686.               BORDER% can be up to 3 digits long.
  687.  
  688.               DIGIT    =    #3  #2  #1
  689.               Example   =    1   1   1   ( 111 )
  690.  
  691.               Digit #1 sets the border.
  692.  
  693.                      0 = No border
  694.                      1 = Single line border
  695.                      2 = Double line border
  696.  
  697.               Digit #2 sets the shadow.
  698.  
  699.                      0 = No shadow
  700.                      1 = Right/Bottom shadow
  701.                      2 = Left/Bottom shadow
  702.                      3 = Left/Top shadow
  703.                      4 = Right/top Shadow
  704.  
  705.                Digit #3 set the title box.
  706.  
  707.                      0 = No title box
  708.                      1 = title box *
  709.  
  710.               The example (111) has a 1 for each digit.  The window
  711.               will has a single lined border, a shadow on the right
  712.               and bottom and a title box
  713.  
  714.               * NOTE: If BORDER% is 100 or greater and the number of
  715.               rows (NR%) is less than 5 title boxes are not permitted.
  716.               ( SEE THE BORDER DESIGNATION CHART FOR FURTHER DETAILS.)
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.                                   8                                   
  724.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.          1.02 CHNGWIND (W%)
  734.  
  735.               Description:  Makes window (W%) the active window.
  736.               W% must represent a window area in window memory.
  737.  
  738.               Argument:   W% is the window number.  It must range from
  739.               0 to 20.  If W% does not represent a window saved by a
  740.               previous call to MAKEWIND, CHNGWIND reports an error.
  741.  
  742.               NOTE:  W% CAN NOT REPRESENT A WINDOW SAVED BY "SAVEWIND".
  743.               IT MUST REPRESENT A WINDOW SAVED BY "MAKEWIND".
  744.  
  745.  
  746.          1.03 PRINTW (TEXT$, R%, LC%)
  747.  
  748.               Description:   Prints text to the active window.  Care
  749.               must be used to assure the active window is visible
  750.               as PRINTW will print predicated on the coordinates of
  751.               the active window regardless of it's visibility.  It is
  752.               advisable, therefore, to print to a window immediately
  753.               after it is made the active window. The text's color
  754.               will be the print-to color of the active window.  If
  755.               no window is active when PRINTW is called an error will
  756.               be reported.
  757.  
  758.               Arguments:   TEXT$ is the text to be printed.
  759.  
  760.                            R% is the row in the window were the text
  761.               will print .  If R%=1 the text will print in the first
  762.               row below the border or title box. PRINTW may be used to
  763.               print a label in the bottom border of the window by
  764.               setting R% to the number or rows in the active window
  765.               minus 1 ( minus 3 if a title box was specified ).  An
  766.               invalid value for R% will result in a reported error.
  767.  
  768.                            LC% is the left column where TEXT$ starts
  769.               printing.  If LC%=100 the text will be centered left to
  770.               right.  IF LC% + the length of TEXT$ is greater than the
  771.               windows width (WD%) - 2 an error will be reported.
  772.  
  773.  
  774.          1.04 SAVEWIND (W%, TR%, LC%, WIDE%, NR%)
  775.  
  776.               Description:   Saves a portion of the screen in window
  777.               memory.  This procedure is the same as MAKEWIND except
  778.               no window is made.  The area designated by the arguments
  779.               is saved.  If the number assigned to W% represents a
  780.               window area previously saved the old window area is
  781.               deleted.  If W% was the active window an active window
  782.               will no longer exist.  An area saved via SAVEWIND can be
  783.               "popped" to the screen at appropriate times during
  784.  
  785.  
  786.  
  787.  
  788.  
  789.                                   9                                   
  790.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.               program execution by RSTRWIND ( see description ).
  800.               A screen area saved by SAVEWIND DOES NOT BECOME THE
  801.               ACTIVE WINDOW.  SAVEWIND differs from RESAVE in that it
  802.               saves an area of the screen specified by it's arguments.
  803.               RESAVE saves the area of the screen as designated by the
  804.               coordinates of the active window.
  805.  
  806.               Arguments:  W% must range from 1 to 20.
  807.  
  808.                           See MAKEWIND for a description of the
  809.               remaining arguments.
  810.  
  811.  
  812.          1.05 RESAVE
  813.  
  814.               Description:   Saves the active window, it's interior,
  815.               and shadow.  As window number 0 can not be saved the
  816.               active window can not be window number 0.  If there is
  817.               no active window or window number 0 is active when
  818.               RESAVE is called an error will be reported.
  819.  
  820.               The screen area saved under the active window is removed
  821.               from window memory and replaced with the active window
  822.               and it's interior.   After complex screens are made in
  823.               the active window's interior, RSAVE can be used to save
  824.               them.   They can be restored to the screen using
  825.               RSTRWIND.  Use RESAVE immediately after a window is made
  826.               and it's interior is filled as  RESAVE will save the
  827.               area of the screen determined by the active window's
  828.               coordinates, even if it is not visible.
  829.  
  830.               Use RESAVE as follows;
  831.  
  832.               1. Make a window number 1 to 20 via a call to MAKEWIND.
  833.                  This becomes the active window.
  834.  
  835.               2. Print in the window using PRINTW.  Additional windows
  836.                  may also be printed in the window.  Use window number
  837.                  0 to make the additional windows, as the screen area
  838.                  under them need not be saved.
  839.  
  840.               3. Call CHNGWIND to make the window number used in step
  841.                  1 the active window.  ( Only required if additional
  842.                  windows were made inside the original window. )
  843.  
  844.               4. Call RESAVE to save active window.
  845.  
  846.               5. Use RSTRWIND to "pop" the window and it's interior on
  847.                  the screen any time during program execution.
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.                                   10                                  
  856.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.               6. After the window is restored to the screen it may be
  866.                  printed in again provided it is the active window.
  867.                  This may require a call to CHNGWIND.
  868.  
  869.               Arguments:   None.
  870.  
  871.  
  872.          1.06 RSTRWIND (W%, DELFLAG%)
  873.  
  874.               Description:   Restores a window area previously saved
  875.               by MAKEWIND, SAVEWIND or RESAVE.  The window area (W%)
  876.               must exist in window memory or RSTRWIND does nothing.
  877.  
  878.               Arguments:   W% is the number ( 1 to 20 ) assigned to
  879.               the saved window area to be restored to the screen.  The
  880.               window area is returned to it's original coordinates.
  881.  
  882.                            DELFLAG% is set to 0 to keep the windowed
  883.               area in window memory.  If the DELFLAG% is not 0 the
  884.               saved window area (W%) is deleted from window memory.
  885.               If W% was the active window an active window will no
  886.               longer exist.
  887.  
  888.  
  889.          1.07 DELWIND (W%)
  890.  
  891.               Description:   Deletes a saved window area (W%) from
  892.               window memory, if it exists in window memory.  If the
  893.               window is the active window an active window will no
  894.               longer exist.
  895.  
  896.               Argument:   W% is the window area number.
  897.  
  898.  
  899.          1.08 CLRWIND
  900.  
  901.               Description:   Clears the interior of the active window.
  902.               Care must be taken to assure that active window is
  903.               visible as CLRWIND clears the area of the screen
  904.               designated as the interior of the active window regard-
  905.               less of the window's visibility.  The window will be
  906.               cleared with it's print-to color.  If no window is
  907.               active when CLRWIND is called, an error is reported.
  908.  
  909.               Arguments:   None
  910.  
  911.  
  912.          1.09 NEWCOLOR ( ATTR% )
  913.  
  914.               Description:   Changes the print-to color of the active
  915.               window.  Text printed in the window by PRINTW or lines
  916.               printed in the window by LINEW will assume the new color
  917.  
  918.  
  919.  
  920.  
  921.                                   11                                  
  922.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.               specified by this routine.  If the active window is
  932.               cleared via a call to CLRWIND, it's interior will be
  933.               cleared with the color specified by NEWCOLOR.  The color
  934.               designation will be retained and used by subsequent
  935.               calls to PRINTW or LINEW for the window which was active
  936.               when NEWCOLOR was called.  If no window is active when
  937.               NEWCOLOR is called, an error is reported.
  938.  
  939.               Argument:   ATTR% is the new color attribute.  SEE THE
  940.               COLOR ATTRIBUTE CHART.
  941.  
  942.  
  943.          1.10 LINEW ( ROW%, TYP% )
  944.  
  945.               Description:   Prints, or erases a line in the active
  946.               window.  If an active window does not exist an error is
  947.               reported. The line will assume the print-to color of the
  948.               active window.  As the border characters are changed
  949.               when a line is printed, the color of the border
  950.               characters may change also.  This will occur if the
  951.               print-to color is not the same as the color of the
  952.               border characters in the active window.
  953.  
  954.               Arguments:  ROW% is the row, of the interior, of the
  955.               active window where a line will print.  If ROW% < 1 or
  956.               ROW% greater then the number of rows in the interior of
  957.               the active window an error will be reported.
  958.  
  959.                           TYP% is the type of line which will print
  960.               and is as follows.
  961.  
  962.                       TYP%               Line type
  963.  
  964.                         1                Single line
  965.                         2                Double line
  966.                         0                Erases a line and returns
  967.                                          normal border characters.
  968.                         Other values     Defaults to single line.
  969.  
  970.               NOTE: IF TYP% = 0 ANY TEXT ON THE LINE IN THE WINDOW, AS
  971.               DESIGNATED BY THE VALUE OF ROW% WILL BE ERASED.
  972.  
  973.  
  974.          1.11 WINDSTATUS
  975.  
  976.               Description:   This is a programming tool.  Calling
  977.               WINDSTATUS reports each windows number, top row, left
  978.               column, width, number of rows, and attribute (color).
  979.               The attribute refers to the original attribute specified
  980.               by the call to MAKEWIND for each window.  If the
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.                                   12                                  
  988.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.               attribute is "SAVED" the window area was saved by a call
  998.               to SAVEWIND, not MAKEWIND.  WINDSTATUS also reports the
  999.               active window and total window memory used to save
  1000.               window areas.  To use WINDSTATUS place a call to
  1001.               WINDSTATUS in the program at the location where it is
  1002.               desireable to view each windows parameters.  The program
  1003.               will terminate and must be restarted.  First remove the
  1004.               call to WINDSTATUS.
  1005.  
  1006.               Arguments:   None.
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.                                   13                                  
  1054.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.                         ***** PULLDOWN WINDOWS *****
  1064.  
  1065.          These procedures generate a maximum of 10 pulldown windows
  1066.          with a maximum of 20 items ( lines ) in each window.  The
  1067.          area covered by the pulldown windows is saved  and restored
  1068.          as the window moves from one menubar item to the next.
  1069.          Unlike the other windowing procedures pulldown windows will
  1070.          only work in the 80 column display width mode.  To select a
  1071.          menubar item the ARROW keys can be used or the first letter
  1072.          of the menubar item may be pressed.  To select an item from
  1073.          any of the pulldown windows the ARROW keys, or "KEY CHAR-
  1074.          ACTER" for the item may be pressed.  If the ARROW keys are
  1075.          used the ENTER or RETURN key must be pressed to finalize the
  1076.          selection.  If a letter is pressed, and it is found, the
  1077.          procedure is automatically exited without the need to press
  1078.          the ENTER or RETURN keys.  The ESC key always exits.
  1079.  
  1080.  
  1081.          2.00 SETPULL (BAR$, PWIND$())
  1082.  
  1083.               Description: Must be called to set up the routine
  1084.               PULLDOWN.  Call SETPULL only once at the beginning of
  1085.               each program using pulldown windows.
  1086.  
  1087.               Arguments:   BAR$ is the menubar.  If BAR$ = "THIS IS A
  1088.               SAMPLE" the menubar would be; THIS  IS  A  SAMPLE.  Two
  1089.               spaces are placed between each menubar item ( THIS,IS
  1090.               A,SAMPLE ).  The maximum length of the menubar is 80
  1091.               characters including the spaces.  No more than 10 menubar
  1092.               items are permitted.  Error detection checks for the
  1093.               menubar length and number of items.
  1094.  
  1095.                            PWIND$() is an array that contains all of
  1096.               the strings representing the items in each pulldown
  1097.               window.  PWIND$() must be in the correct format. ( SEE:
  1098.               EXAMPLE OF A CALL TO SETPULL ).  The last item in each
  1099.               pulldown window must be followed by a "***" in PWIND$().
  1100.               "ENDPULL" in PWIND$() marks the end of all pulldown
  1101.               windows.  PWIND$(1) must be the first string in the
  1102.               array, NOT PWIND$(0).
  1103.  
  1104.               Each selectable item in PWIND$() has a "KEY CHARACTER".
  1105.               The key character is the character which is searched for
  1106.               when a key is pressed while in the PULLDOWN enviornment.
  1107.               The key character defaults to the first character in
  1108.               each item.  To designate the key character as a
  1109.               different character follow the character with a "@".
  1110.  
  1111.               EXAMPLE:
  1112.               PWIND$(1) = "Get File"        ( Key character = "G")
  1113.               PWIND$(2) = "Save F@ile"      ( Key character = "F")
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.                                   14                                  
  1120.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.               The "@" will not be displayed when the string is printed
  1130.               in the pulldown window.  The description for KEYATTR%
  1131.               for the routine PULLDOWN describes how to make the key
  1132.               character a different color, or high intensity, enabling
  1133.               users to distinguish it as the key character.
  1134.  
  1135.               NOTE: DO NOT PLACE THE "@" IN POSITION ONE OR TWO OF THE
  1136.               STRING AS IT WILL PRINT IN THE PULLDOWN WINDOW.  AS
  1137.               STATED THE KEY CHARACTER WILL DEFAULT TO POSITION ONE IF
  1138.               THE "@" IS OMITTED FROM THE STRING.  THIS ELIMINATES THE
  1139.               NEED TO PLACE THE "@" IN POSITION TWO.
  1140.  
  1141.               If an element of PWIND$() = "-" and it is not the first
  1142.               or last item in a pulldown window it will segment the
  1143.               pulldown window by placing a line across the width of it.
  1144.               If the "-" is the first or last item in the pulldown
  1145.               window it will print as a "-".
  1146.  
  1147.               EXAMPLE:  PWIND$(3) = "-"   Providing PWIND$(3) is not
  1148.                         the first or last item in the pulldown window
  1149.                         PWIND$(3) will print as a line across the
  1150.                         window.
  1151.  
  1152.               --------------------------------------------------------
  1153.               EXAMPLE OF A CALL TO SETPULL
  1154.  
  1155.               BAR$ = "THIS IS A SAMPLE"     'MENUBAR STRING DEFINED.
  1156.               N%=20                         'USE THIS METHOD SO
  1157.               DIM PWIND$(N%)                'PWIND$() IS DYNAMIC.
  1158.                                             'DON'T USE DIM PWIND$(20)
  1159.               TEMP%=0
  1160.               WHILE PWIND$(TEMP%) <> "ENDPULL"
  1161.                  TEMP% = TEMP% + 1            'TEMP% MUST START WITH 1.
  1162.                  READ PWIND$(TEMP%)           'READ PULLDOWN WINDOW
  1163.               WEND                            'DATA.
  1164.  
  1165.               CALL SETPULL (BAR$, PWIND$())
  1166.               ERASE PWIND$                    'COMPLETELY ERASES PWIND$()
  1167.                                               'IF IT IS DYNAMIC.
  1168.               DATA HELLO, JOE,***        :' WINDOW# 1
  1169.  
  1170.               DATA HOW, ARE, -, YOU,***  :'# 2 LINE IN ROW 3
  1171.  
  1172.               DATA I,AM@,FINE,***   :'#3., "M" = KEY CHARACTER FOR "AM"
  1173.  
  1174.               DATA BYE,***          :'#4, ONE ITEM.
  1175.               DATA ENDPULL
  1176.               --------------------------------------------------------
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.                                   15                                  
  1186.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.               First the menubar is defined, then an array is dimen-
  1196.               sioned to hold the pulldown window's data. This is only
  1197.               a temporary array to hold the data and is erased after
  1198.               SETPULL is called.  The data is then read.  The "***"
  1199.               signals the end of each pulldown window and MUST be
  1200.               entered exactly as shown. The "ENDPULL" signals the end
  1201.               for all pulldown windows and MUST be the last data item
  1202.               read. If the format is not exactly as shown an error
  1203.               will be reported or the windows will not be as expected.
  1204.               In the example shown the first menubar item is "THIS".
  1205.               It's associated pulldown window contains the two items
  1206.               "HELLO" and "JOE".  The last menubar item is "SAMPLE"
  1207.               and it's pulldown window contains one item "BYE".
  1208.  
  1209.               NOTE: THE DATA MUST BE IN THE FORMAT SHOWN.  THE CHAR-
  1210.               ACTERS "***" MARK THE END OF EACH INDIVIDUAL WINDOW AND
  1211.               THE WORD "ENDPULL" MARKS THE END OF ALL PULLDOWN WINDOWS.
  1212.  
  1213.  
  1214.          2.01 PULLDOWN (MENUBAR%, WINDITEM%, ATTR%, KEYATTR%, BORDER%)
  1215.  
  1216.               Description: Places the menubar on line one.  Places
  1217.               the user in the pulldown window environment.
  1218.  
  1219.               Arguments:   MENUBAR% is the sequential number ( left
  1220.               to right ) of selected menubar item . It is returned to
  1221.               the calling procedure (PULLDOWN).  If the second item in
  1222.               the menubar is selected, MENUBAR% will equal two. If the
  1223.               ESC key is pressed MENUBAR% = 0.
  1224.  
  1225.               WINDITEM% represents the row number of the selected
  1226.               pulldown window item.  It is returned to the calling
  1227.               procedure.  If the ESC key is pressed WINDITEM% = 0.
  1228.  
  1229.               NOTE:  A LINE IN A PULLDOWN WINDOW OCCUPIES A ROW
  1230.               POSITION.
  1231.  
  1232.               ATTR% is the color.  It follows the same rules as
  1233.               described in MAKEWIND except a flashing foreground is
  1234.               not permitted. Any value over 127 is changed to ATTR%
  1235.               MOD 128.
  1236.  
  1237.               KEYATTR% is the color of the key character for each item
  1238.               in the pulldown windows.  If KEYATTR% = 0 the key
  1239.               character will be the same color as the other characters
  1240.               in each window item.  This would be appropriate if the
  1241.               first charcter in each item is ALWAYS the key character.
  1242.               Setting KEYATTR% to a different color, or high intensity,
  1243.               allows users distinguish the character as the key
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.                                   16                                  
  1252.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.               character for each item in the list.  Any value for
  1262.               KEYATTR% over 127 is changed to KEYATTR% MOD 128.
  1263.  
  1264.                   BORDER% is the pulldown window's border designation.
  1265.               BORDER% can be 0,1,2,10,11 or 12 for pulldown windows.
  1266.               Any other value for BORDER% will result in an error.
  1267.               SEE THE BORDER DESIGNATION CHART.
  1268.  
  1269.  
  1270.          2.02 CHNGPULL ( BARITEM%, WINDITEM%, ATTR% )
  1271.  
  1272.               Description: Changes the color of an item in a pulldown
  1273.               window.  Also disables or enables the ability to select
  1274.               the item.
  1275.  
  1276.               Arguments:   BARITEM% is the sequential number ( left
  1277.               to right ) of the menubar selection associated with the
  1278.               item's pulldown window.
  1279.  
  1280.                            WINDITEM% is the row position of the item
  1281.               in the pulldown window's interior.
  1282.  
  1283.               NOTE:  A LINE IN A PULLDOWN WINDOW OCCUPIES A ROW
  1284.               POSITION.
  1285.  
  1286.                            ATTR% serves two purposes.
  1287.  
  1288.               If ATTR% > 0 it changes the color of the item
  1289.               specified by BARITEM% and WINDITEM% to ATTR% ( SEE THE
  1290.               COLOR ATTRIBUTE CHART ). The key character in the item
  1291.               also assumes the color specified by ATTR%.  The ability
  1292.               to select the item from the pulldown window is disabled.
  1293.               Any value for ATTR% over 127 is changed to ATTR% MOD
  1294.               128.
  1295.  
  1296.               If ATTR% = 0 the color of the item, and it's key char-
  1297.               acter is returned to it's original status as defined in
  1298.               the original call to PULLDOWN.  The ability to select
  1299.               the item is enabled.
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.                                   17                                  
  1318.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.                          ***** SCROLL WINDOWS *****
  1328.  
  1329.          SCRLWIND places a scrollable list in the active window.
  1330.          A highlight ( scroll ) bar is placed over a specified item in
  1331.          the list and can be moved by the user via the UP and DOWN
  1332.          ARROW keys.  Pressing the ENTER key returns the sequential
  1333.          item number covered by the scroll bar.  The HOME, END, PG UP,
  1334.          and PG DN keys move the scroll bar as indicated.  SCRLWIND
  1335.          searches from the position of the scroll bar to the last item
  1336.          in the window  ( list ) to see if the key pressed is the KEY
  1337.          CHARACTER of any element of the list. If a match is found the
  1338.          scroll bar moves to that position in the list.
  1339.  
  1340.  
  1341.          3.00 SCRLWIND (LIST$(), ENTRIES%, KIND$, RTRN%, KEYATTR%)
  1342.  
  1343.               Description: Places a list ( LIST$() ) in the active
  1344.               window.  The list is ENTRIES% long.
  1345.  
  1346.               Arguments:   LIST$() is the array holding the strings to
  1347.               be placed in the scroll window.  Each element of the
  1348.               array is a line in the scroll window.  If the length of
  1349.               any element is greater then the width of the window - 4
  1350.               an error is reported. LIST$(1) must be the first string
  1351.               in the array, NOT LIST$(0).
  1352.  
  1353.               Each selectable item in LIST$() has a "KEY CHARACTER".
  1354.               The key character is the character which is searched for
  1355.               when a key is pressed while in the SCRLWIND enviornment.
  1356.               The key character defaults to the first character in
  1357.               each item.  To designate the key character as a
  1358.               different character follow the character with a "@" in
  1359.               the string.
  1360.  
  1361.               EXAMPLE: LIST$(1) = "Get File"  ( Key character = "G")
  1362.                        LIST$(2) = "Save F@ile"( Key character = "F")
  1363.  
  1364.               The "@" will not be displayed when the string is printed
  1365.               in the scroll window.  The description for KEYATTR% for
  1366.               this routine describes how to make the key character a
  1367.               different color, or high intensity, enabling users to
  1368.               distinguish it as the key character.
  1369.  
  1370.               NOTE: DO NOT PLACE THE "@" IN POSITION ONE OR TWO OF THE
  1371.               STRING AS IT WILL PRINT IN THE SCROLL WINDOW.  AS STATED
  1372.               THE KEY CHARACTER WILL DEFAULT TO POSITION ONE IF THE
  1373.               "@" IS OMITTED FROM THE STRING.  THIS ELIMINATES THE
  1374.               NEED TO PLACE THE "@" IN POSITION TWO.
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.                                   18                                  
  1384.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.               If an element of LIST$() = "-" and it is not the first
  1394.               item in the list or the last item in the list and all of
  1395.               the items in LIST$() will fit in the window's interior
  1396.               the scroll window will be segmented.  A line will print
  1397.               across the window as determined by the position of the
  1398.               "-" in LIST$().  If the previous conditions are not met
  1399.               the string will print as a "-".
  1400.  
  1401.               EXAMPLE:  LIST$(2) = "-"  ( Provided LIST$(2) is not
  1402.                         the last item in the list and the number of
  1403.                         interior rows in the window is greater than
  1404.                         two, LIST$(2) will print as a line.)
  1405.  
  1406.                            ENTRIES% is the number of elements in the
  1407.               array ( LIST$() ) to use in the scroll window .
  1408.  
  1409.                            KIND$ is as follows;
  1410.  
  1411.               IF KIND$ = "A" when entering SCRLWIND the scroll window
  1412.               is an "AUTO-EXIT" scroll window. If the key pressed
  1413.               equals the key character of an item in the scroll window
  1414.               and the item is between the scroll bar and the end of the
  1415.               list the routine will automatically exit. The position
  1416.               of the selected item in LIST$() will be returned in
  1417.               RTRN%.  If RTRN% = 2, LIST$(2) was selected.
  1418.  
  1419.               IF KIND$ ="M" when entering SCRLWIND the scroll window is
  1420.               a "MARK" scroll window.  Pressing the <+> or INSERT key
  1421.               marks the item covered by the scroll bar.  A right arrow
  1422.               is printed to the left of the item in the scroll window
  1423.               to signify it has been marked.  Pressing the <-> or
  1424.               DELETE key un-marks an item if it was marked.  Striking
  1425.               the PRINT key or space bar marks all items, unless they
  1426.               were all previously marked, in which case the PRINT key
  1427.               or space bar will unmark all items.  Pressing the ENTER
  1428.               or RETURN key returns a coded string in KIND$ which
  1429.               represents the marked items.  If KIND$ ="" no items were
  1430.               marked.  If any items were marked KIND$ will be ENTRIES%
  1431.               long.  Each character in KIND$ will correspond to an
  1432.               element in LIST$().  If the first character of KIND$=" "
  1433.               then LIST$(1) was not marked. If the second character
  1434.               in KIND$ = CHR$(26) then LIST$(2) was marked.  Each un-
  1435.               marked element of LIST$() will have a corresponding space
  1436.               ( " " ) in KIND$ while each marked element will have a
  1437.               corresponding right arrow ( CHR$(26) ) in KIND$.  See the
  1438.               description for the function MARKED% for a method of
  1439.               decoding KIND$.
  1440.  
  1441.               IF KIND$ = "S" when entering SCRLWIND the scroll window
  1442.               is a "SINGLE MARK" scroll window. Provided there is more
  1443.               than one item ( ENTRIES% > 1 ) in the scroll window, one
  1444.               item will be marked as in the preceding example for a
  1445.  
  1446.  
  1447.  
  1448.  
  1449.                                   19                                  
  1450.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.               "MARK" scroll window.  Only one item can be marked,
  1460.               however.  The marked item follows the scroll bar.
  1461.               Pressing TAB, ENTER, RETURN or ECS will exit the scroll
  1462.               window.  If TAB, ENTER or RETURN is pressed the selected
  1463.               item number is returned in RTRN%.  If the scroll bar is
  1464.               over LIST$(2), RTRN% = 2.  If ESC is pressed RTRN% = 0.
  1465.  
  1466.               SINGLE MARK scroll windows with one entry ( ENTRIES%=1 )
  1467.               do not mark the item.  RTRN% = 1 if ENTER or RETURN is
  1468.               pressed. RTRN% = 0 if ESC is pressed and RTRN% = -1 if
  1469.               TAB is pressed.  These scroll windows can be used as
  1470.               <OK>, <CANCEL>, <ABORT> etc... scroll windows.
  1471.  
  1472.               NOTE: SEE THE SECTION LABELED "Multiple Scroll Windows"
  1473.               TO SEE HOW SINGLE MARK SCROLL WINDOWS CAN BE USED TO
  1474.               DISPLAY AND USE SEVERAL SCROLL WINDOWS AT ONE TIME.
  1475.  
  1476.               IF KIND$ = "V" the scroll window is "VIEW ONLY".  The
  1477.               window will be filled with the strings in LIST$() and the
  1478.               routine will be exited.
  1479.  
  1480.               IF KIND$ = "SV" the scroll window is "VIEW ONLY - SINGLE
  1481.               MARK" scroll window.  The window will be filled with the
  1482.               strings in LIST$().  If ENTRIES% > 1 the item designated
  1483.               by the value of RTRN% will be marked. ( See description
  1484.               for RTRN%. )
  1485.  
  1486.               Any other value for KIND$ when entering SCRLWIND results
  1487.               in a "REGULAR" scroll window. After the scroll bar
  1488.               is moved to the selected item, pressing the ENTER or
  1489.               RETURN key returns the selected item in RTRN%.
  1490.  
  1491.                            RTRN% serves two purposes. One is to place
  1492.               the scroll bar over a the item specified by RTRN% when
  1493.               entering SCRLWIND.  If RTRN% < 1 or RTRN% > ENTRIES%,
  1494.               RTRN% defaults to 1 and the scroll bar will be positioned
  1495.               over the first item in the window.
  1496.  
  1497.               EXAMPLE: RTRN% = 2  ( If there are a minimum of two
  1498.               items in the scroll window ( ENTRIES% > 1 ) the scroll
  1499.               bar will be over LIST$(2) when entering SCRLWIND. )
  1500.  
  1501.               RTRN% also returns the selected item when exiting
  1502.               SCRLWIND.  If RTRN% = 2, LIST$(2) was selected.  IF ECS
  1503.               is pressed to exit SCRLWIND, RTRN% = 0.  If TAB is
  1504.               pressed and the scroll window is a "SINGLE MARK" scroll
  1505.               window with over one entry, RTRN% returns the selected
  1506.               item.  If the scroll window is a "SINGLE MARK" scroll
  1507.               window with one entry and TAB is pressed, RTRN% = -1.
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.                                   20                                  
  1516.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.               NOTE: THE ITEM SELECTED IN LIST$() ( AS INDICTED BY THE
  1526.               VALUE OF RTRN% ) MAY CONTAIN A "@" TO INDICATE THE KEY
  1527.               CHARACTER.  IF IT IS NESESSARY TO PRINT THE ITEM THE "@"
  1528.               CAN BE REMOVED FROM IT USING THE FOLLOWING FUNCTION.
  1529.  
  1530.               ' FUNCTIONS MUST BE DECLARED.  RTRN% = ITEM # SELECTED
  1531.               ' FROM LIST$().
  1532.  
  1533.               DECLARE FUNCTION NO$( ITEM$ )
  1534.               '( Place this at the start of the module.)
  1535.  
  1536.               ' IF RTRN% = 2 AND LIST$(RTRN%) = "Save F@ile", LIST$(2)
  1537.               ' CAN BE PRINTED AS "Save File" as follows.
  1538.  
  1539.               PRINT NO$( LIST$(RTRN%) )
  1540.  
  1541.  
  1542.               ' INCLUDE THIS FUNCTION IN YOUR PROGRAM
  1543.  
  1544.               FUNCTION NO$ ( ITEM$ )
  1545.                 A% = INSTR ( ITEM$, "@" )
  1546.                 IF A% < 3 THEN        '"@" SHOULD NOT BE IN POSITION
  1547.                    NO$ = ITEM$       ' 1 OR 2, OR NO "@" IN ITEM$.
  1548.                 ELSE
  1549.                    NO$ = LEFT$(ITEM$, A% - 1) + MID$(ITEM$, A% + 1)
  1550.                 END IF
  1551.               END FUNCTION
  1552.  
  1553.  
  1554.                            KEYATTR% is the color of the key character
  1555.               for each item in the scroll window.  If KEYATTR% = 0
  1556.               the key character will be the same color as the other
  1557.               characters for each window item.  This would be
  1558.               appropriate if the first charcter in each item is ALWAYS
  1559.               the key character.   Setting KEYATTR% to a different
  1560.               color, or high intensity, allows users to distinguish the
  1561.               character as the the key character for each item in the
  1562.               list.  KEYATTR% has no effect on the background color of
  1563.               an item when it is covered by the scroll bar.  It can
  1564.               effect the background color for the key character.  This
  1565.               is useful for computers without high intensity or color
  1566.               capabilities.
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.                                   21                                  
  1582.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.               -------------------------------------------------------
  1592.               'EXAMPLE OF A CALL TO SCRLWIND - AUTO EXIT SCROLL WINDOW
  1593.  
  1594.               DIM LIST$(11)
  1595.               FOR X% = 1 TO 11              'ALWAYS START WITH 1
  1596.                  READ LIST$(X%)
  1597.               NEXT
  1598.  
  1599.               CALL MAKEWIND(15, "", 1, 1, 10, 13, 112, 2)
  1600.               KIND$ = "A" : RTRN% = 3: KEYATTR% = 116
  1601.               CALL SCRLWIND(LIST$(), 11, KIND$, RTRN%, KEYATTR%)
  1602.  
  1603.               DATA ONE
  1604.               DATA TW@O
  1605.               ' FOR ABOVE KEY CHAR. = "W"
  1606.               DATA TH@REE
  1607.               ' FOR ABOVE KEY CHAR. = "H"
  1608.               DATA FOUR
  1609.               DATA FIV@E
  1610.               ' FOR ABOVE KEY CHAR. = "V"
  1611.               DATA "-"
  1612.               ' FOR ABOVE PUT A LINE IN ROW 6
  1613.               DATA SIX@
  1614.               ' FOR ABOVE KEY CHAR. = "X"
  1615.               DATA SEVEN
  1616.               DATA EIGHT
  1617.               DATA NINE
  1618.               DATA TEN
  1619.               -------------------------------------------------------
  1620.  
  1621.               The scroll window is the window defined by the call to
  1622.               MAKEWIND as it is the active window when SCRLWIND is
  1623.               called.  The list in the scroll window is the items in
  1624.               the data statements, as they were read into LIST$().
  1625.               The second parameter in the call to SCRLWIND is the
  1626.               number of items in the list ( 11 ).  As KIND$ ="A"
  1627.               before calling SCRLWIND, the scroll window is an "AUTO-
  1628.               EXIT SCROLL" window. Since RTRN% = 3 when entering
  1629.               SCRLWIND the scroll bar will start over the third item (
  1630.               THREE ). The sixth DATA item    = "-". Therefore, a line
  1631.               will print in row six of the scroll window.  The key
  1632.               character for each item will be red ( KEYATTR% = 116 ).
  1633.               RTRN% will equal the selected item when SCRLWIND is
  1634.               exited.  As reading the data takes time, quicker scroll
  1635.               windows will be generated if all arrays used in scroll
  1636.               windows are filled using READ and DATA statement during
  1637.               program initialization.
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.                                   22                                  
  1648.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.               -------------------------------------------------------
  1658.               ' EXAMPLE - MULTIPLE SCROLL WINDOWS ( SINGLE MARK )
  1659.               ' FIRST INITIALIZE THE DATA FOR THE SCROLL WINDOWS. DO
  1660.               ' THIS AT THE BEGINNING OF THE PROGRAM FOR SPEED.
  1661.  
  1662.               DIM SWIND%(5), STR%(5), SLC%(5), SWID%(5), SNR%(5)
  1663.               DIM SENTRIES%(5), STITLE$(5)
  1664.               DIM SRTRN1$(4), SRTRN2$(5), SRTRN3$(4)
  1665.               DIM SRTRN4$(1), SRTRN5$(1)
  1666.  
  1667.               FOR X% = 1 TO 5       ' DATA FOR 5 SCROLL WINDOWS
  1668.  
  1669.               READ SWIND%(X%)       ' WINDOW # FOR EACH SCROLL WINDOW
  1670.               READ STR%(X%)         ' TOP ROW
  1671.               READ SLC%(X%)         ' LEFT COLUMN
  1672.               READ SWID%(X%)        ' WIDTH
  1673.               READ SNR%(X%)         ' NUMBER OF ROWS
  1674.               READ SENTRIES%(X%)    ' ENTRIES
  1675.               READ STITLE$(X%)      ' TITLE ( FOR WINDOWS TITLE BOX )
  1676.  
  1677.                  FOR Y% = 1 TO SENTRIES%(X%)
  1678.                     SELECT CASE X%         ' X% = WINDOW #
  1679.                        CASE 1
  1680.                          READ SRTRN1$(Y%)  ' LIST FOR SCROLL WINDOW 1.
  1681.                        CASE 2
  1682.                          READ SRTRN2$(Y%)  ' LIST FOR SCROLL WINDOW 2.
  1683.                        CASE 3
  1684.                          READ SRTRN3$(Y%)  ' LIST FOR SCROLL WINDOW 3.
  1685.                        CASE 4
  1686.                          READ SRTRN4$(Y%)  ' LIST FOR SCROLL WINDOW 4.
  1687.                        CASE 5
  1688.                          READ SRTRN5$(Y%)  ' LIST FOR SCROLL WINDOW 5.
  1689.                     END SELECT
  1690.                  NEXT
  1691.               NEXT
  1692.  
  1693.               ' DATA FOR EACH SCROLL WINDOW
  1694.               ' WINDOW#, TOP ROW,LEFT COLUMN,WIDTH,ROWS,ENTRIES,TITLE,
  1695.               ' ITEMS IN THE LIST
  1696.  
  1697.               DATA 16,5,16,12,8,4," TYPE",COLONIAL,SPLIT,BI-LEVEL,RANCH
  1698.               DATA 17,5,35,12,9,5," COLOR",WHITE,BLUE,TAN,BROWN,YELLOW
  1699.               DATA 18,5,54,12,8,4," LOCATION",NORTH,SOUTH,EAST,WEST
  1700.               DATA 19,14,24,14,3,1,"","----OK----"
  1701.               DATA 20,14,43,14,3,1,"","--CANCEL--"
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.                                   23                                  
  1714.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.               ' MARK THE FIRST ITEM IN EACH SCROLL WINDOW.  CAN BE
  1724.               ' USED FOR ANY ITEM IN THE WINDOW.
  1725.  
  1726.               SRTRN1% = 1: SRTRN2% = 1: SRTRN3% =1
  1727.  
  1728.               ' ******* LATER IN THE PROGRAM DO THIS:
  1729.  
  1730.               ' USE THE PREVIOUS DATA FOR THE MULTIPLE SCROLL
  1731.               ' WINDOWS.
  1732.  
  1733.               ' SAVE THE VALUES FOR THE MARKED ITEM IN EACH SCROLL
  1734.               ' WINDOW.  NEEDED FOR ESC OR --CANCEL-- .
  1735.  
  1736.               PRTRN1% = SRTRN1%: PRTRN2% = SRTRN2%: PRTRN3% = SRTRN3%
  1737.  
  1738.  
  1739.               ' MAKE FIVE WINDOWS. WINDOW NUMBERS 16 - 20 ( SWIND%() ).
  1740.               ' AS BORDER% MOD 100 = 0 THERE IS NO BORDER -- BE
  1741.               ' CAREFULL AS THE BLANK BORDER STILL OCCUPIES A POSITION
  1742.               ' ON THE SCREEN.
  1743.               ' AS THE BORDER (BRDR%) ARGUMENT =100 FOR WINDOWS 16, 17
  1744.               ' AND 18 THOSE WINDOWS HAVE A TITLE BOX.  THE "OK"  AND
  1745.               ' AND "CANCEL" SCROLL WINDOWS HAVE LESS THAN 5 ROWS SO
  1746.               ' THEY CAN'T HAVE NO TITLE BOX, THUS BRDR% IS SET TO 0.
  1747.               ' SINCE THE ARGUMENT FOR COLOR = 112 THE BACKGROUND
  1748.               ' COLOR WILL BE WHITE WITH A BLACK FOREGROUND.
  1749.               ' **** SUGGESTION: WHILE DEVELOPING MULTIPLE SCROLL
  1750.               ' WINDOWS SET THE BORDER TO PRINT.  THIS WILL GIVE A
  1751.               ' BETTER PICTURE AS TO HOW BIG THE WINDOWS ARE.  AFTER
  1752.               ' DEVELOPMENT THE BORDER CAN BE SET BLANK ( 100 OR 0 ).
  1753.  
  1754.               FOR X% = 1 TO 5
  1755.  
  1756.               ' BORDER IS TITLE BOX EXCEPT WINDOW 19 & 20
  1757.               IF SWIND%(X%) > 18 THEN BRDR%=0 ELSE BRDR%=100
  1758.  
  1759.               'PUT THE FOLLOWING CALL TO MAKEWIND ON ONE LINE.
  1760.                 CALL MAKEWIND (SWIND%(X%), STITLE$(X%), STR%(X%),
  1761.                               SLC%(X%), SWID%(X%), SNR%(X%), 112, BRDR%)
  1762.               NEXT
  1763.  
  1764.               KIND$ = "SV"  ' THIS MAKES THE SCROLL WINDOWS "SINGLE
  1765.                             ' MARK - VIEW" SCROLL WINDOWS FOR THE
  1766.                             ' FIRST PASS THROUGH THEM.  THE ITEMS IN
  1767.                             ' THE LIST FOR EACH SCROLL WINDOW WILL
  1768.                             ' PRINT IN THE WINDOW AND SCRLWIND WILL BE
  1769.                             ' EXITED.  AFTER ALL FIVE WINDOWS ARE
  1770.                             ' FILLED KIND$ IS SET TO "S" AND THE FIRST
  1771.                             ' SCROLL WINDOW BECOMES ACTIVE.  A USER
  1772.                             ' ACTION IS THEN REQUIRED.
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.                                   24                                  
  1780.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.           ' FILL THE SCROLL WINDOWS FIRST, THEN GO BACK TO THE
  1790.           ' FIRST ONE ( WINDOW # 16 ).  LAST ARGUMENT = 0 SO THE
  1791.           ' KEY CHARACTER IS THE SAME COLOR ( BLACK ON WHITE ) AS ALL '
  1792.           OTHER CHARACTERS.  THE KEY CHARACTER IN THIS EXAMPLE IS '
  1793.           ALWAYS THE FIRST CHARACTER.
  1794.  
  1795.           STARTS:
  1796.  
  1797.           ' SCROLL WINDOW TITLED "TYPE"
  1798.           CALL CHNGWIND (16)            ' MAKE 16 THE ACTIVE WINDOW
  1799.           CALL SCRLWIND (SRTRN1$(), SENTRIES%(1), KIND$, SRTRN1%, 0)
  1800.           IF SRTRN1% = 0  GOTO NOCHANGE       ' ESC
  1801.  
  1802.           ' SCROLL WINDOW TITLED "COLOR"
  1803.           CALL CHNGWIND (17)
  1804.           CALL SCRLWIND (SRTRN2$(), SENTRIES%(2), KIND$, SRTRN2%, 0)
  1805.           IF SRTRN2% = 0 GOTO NOCHANGE      ' ESC
  1806.  
  1807.           ' SCROLL WINDOW TITLED "LOCATION"
  1808.           CALL CHNGWIND (18)
  1809.           CALL SCRLWIND (SRTRN3$(), SENTRIES%(3), KIND$, SRTRN3%, 0)
  1810.           IF SRTRN3% = 0 GOTO NOCHANGE      ' ESC
  1811.  
  1812.           ' "OK" SCROLL WINDOW. SINGLE ENTRY SO NO ITEMS ARE MARKED.
  1813.           CALL CHNGWIND (19)
  1814.           CALL SCRLWIND (SRTRN4$(), SENTRIES%(4), KIND$, TEMP%, 0)
  1815.           IF TEMP% = 0 GOTO NOCHANGE        ' ESC
  1816.           IF KIND$ = "S" THEN               ' WAS NOT "SV" ( VIEW )
  1817.              IF TEMP% = 1 GOTO PROCEED      ' WAS ENTER OR RETURN
  1818.              IF TEMP% = 0 GOTO NOCHANGE     ' WAS ESC
  1819.           END IF
  1820.  
  1821.           ' "CANCEL" SCROLL WINDOW. SINGLE ENTRY SO NO ITEMS ARE MARKED.
  1822.           CALL CHNGWIND (20)
  1823.           CALL SCRLWIND (SRTRN5$(), SENTRIES%(5), KIND$, TEMP%, 0)
  1824.           IF KIND$ = "SV" THEN         ' DONE DISPLAYING WINDOWS SO
  1825.               KIND$ = "S"              ' MAKE "SINGLE MARK" SCROLL
  1826.               GOTO STARTS              ' WINDOWS AND START OVER.
  1827.           END IF
  1828.           IF TEMP% = - 1 GOTO STARTS   ' FOR SINGLE ENTRY SCROLL
  1829.                                        ' WINDOWS TEMP% = -1 FOR TAB.
  1830.  
  1831.           ' PROGRAM PROCEEDS HERE IF TAB WAS NOT PRESSED FOR
  1832.           ' "CANCEL" SCROLL WINDOW.  ENTER, RETURN OR ESC MUST HAVE
  1833.           ' BEEN PRESSED. PROGRAM GOES TO NOCHANGE TO RESTORE VALUES
  1834.  
  1835.           NOCHANGE:
  1836.           ' ESC OR CANCEL SELECTED. RESTORE PREVIOUSLY SAVED VALUES.
  1837.           SRTRN1% = PRTRN1%: SRTRN2% = PRTRN2%: SRTRN3% = PRTRN3%
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.                                   25                                  
  1846.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.           PROCEED:
  1856.           ' IF ENTER OR RETURN WAS PRESSED WITH THE "OK" SCROLL '
  1857.           WINDOW ACTIVE SRTRN1%, SRTRN2%, AND SRTRN3% NOW HOLD THE '
  1858.           MARKED ITEMS FOR THEIR RESPECTIVE SCROLL WINDOWS.  IF ESC '
  1859.           OR "CANCEL" WAS SELECTED THE PROGRAM GOES TO NOCHANGE AND '
  1860.           SRTRN1%, SRTRN2%, AND SRTRN3% ARE LOADED WITH THEIR OLD '
  1861.           VALUES
  1862.  
  1863.  
  1864.          3.01 MARKED%(RTRN$, START%)
  1865.  
  1866.               Description: MARKED%(RTRN$, START%) is a function used
  1867.               to decode RTRN$ after a call to SCRLWIND is made with
  1868.               the MARK option ON.   MARKED%(RTRN$, START%) will equal
  1869.               the next position in RTRN$ starting from position START%
  1870.               which contains a CHR$(26).  If the third element (item)
  1871.               in LIST$() was marked in the call to SCRLWIND and START%
  1872.               =1, THEN: MARKED%(RTRN$,START%) = 3.
  1873.  
  1874.               Arguments:   RTRN$ is the string returned by calling
  1875.               SCRLWIND with the MARKED option ON. RTRN$ = "" if no
  1876.               items were marked.
  1877.  
  1878.  
  1879.                           START% is the postion in RTRN$ to start
  1880.               searching for a CHR$(26).  A CHR$(26) in  RTRN$
  1881.               represents a marked element in the string array LIST$()
  1882.               used in SCRLWIND. Every time a position in RTRN$ is
  1883.               found which corresponds to a marked element of LIST$(),
  1884.               START% is set to a new value which is equal to the
  1885.               "marked" position in RTRN$ + 1.  This is the next
  1886.               position in RTRN$ where the search will start for
  1887.               another "marked" position. If MARKED% =0 there are no
  1888.               more "marked" positions in RTRN$ or RTRN$ = "".
  1889.               -------------------------------------------------------
  1890.               'EXAMPLE USING THE FUNCTION MARKED% (RTRN$,START%) THIS
  1891.               'EXAMPLE PRINTS THE MARKED ITEMS IN LIST$() AFTER A CALL
  1892.               'TO SCRWIND.
  1893.  
  1894.               'GIVEN: SCRLWIND HAS BEEN CALLED. THE FOURTH AND TENTH
  1895.               'ELEMENTS OF LIST$() WERE MARKED.  RTRN$ WAS RETURNED BY
  1896.               'A PREVIOUS THE CALL TO SCRLWIND.
  1897.  
  1898.               DECLARE FUNCTION MARKED%(RTRN$,START%)   ' MUST BE IN
  1899.               '(Put this at the start of the module)   ' MODULE USING
  1900.                                                        ' FUNC. MARKED%.
  1901.  
  1902.               START%=1                ' START THE SEARCH AT POSITION 1
  1903.                                       ' OF RTRN$.
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.                                   26                                  
  1912.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.               DO                                   ' MARKED% = 0 AFTER
  1922.                  A% = MARKED%(RTRN$, START%)       ' ALL MARKED ITEMS
  1923.                  IF A% = 0 THEN EXIT DO            ' ARE FOUND OR IF
  1924.                    PRINT LIST$(A%)
  1925.                  END IF
  1926.               LOOP
  1927.               -------------------------------------------------------
  1928.               The first time through the loop, MARKED% (RTRN$, START%)
  1929.               will equal 4, and LIST$(4) will print.  START% is auto-
  1930.               matically set to 5, the next position to start searching
  1931.               RTRN$ for a "marked" position in RTRN$.  The second loop
  1932.               will set MARKED% (RTRN$,START%) to 10 and LIST$(10) will
  1933.               print.  As there are no more marked positions, MARKED% =
  1934.               0 and the loop be exited.
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.                                   27                                  
  1978.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.                          ***** GET ANSWER WINDOWS *****
  1988.  
  1989.          Get answer pauses the program, prompts the user, and waits
  1990.          for the user to press a key.  The prompt may, optionally, be
  1991.          windowed.  The key may be any key, or individual keys from a
  1992.          list of permissible keys.  The area covered by the get answer
  1993.          window is restored after the key is pressed.
  1994.  
  1995.          4.00 GETANS (PROMPT$, CHOICE$, ANS$, TR%, LC%, ATTR%, BORDER%)
  1996.  
  1997.               Description: Generates a prompt with an optional window
  1998.               and pauses, waiting for a reply.
  1999.  
  2000.               Arguments:   PROMPT$ is the prompt (i.e. Press any key )
  2001.               or question (i.e. Are you sure?  Y/N ).  It may be
  2002.               optionally windowed ( SEE BORDER% ).  The width of the
  2003.               window is determined by the length of PROMPT$.  If
  2004.               PROMPT$ is too long making the window, or prompt, too
  2005.               wide to fit on the screen an error will be reported.
  2006.  
  2007.                            CHOICE$ is the valid keys the user can
  2008.               press to exit GETANS.  If CHOICE$ = "" any key will
  2009.               exit.  This would be appropriate if PROMPT$ = "Press any
  2010.               key".  If CHOICE$ = "YN" then the "Y" or "y" or "N" or
  2011.               "n" keys will exit GETANS.  The ESC key will always exit
  2012.               regardless of CHOICE$.
  2013.  
  2014.                            ANS$ is the key pressed.  It is returned in
  2015.               upper case.  If CHOICE$ = "" then ANS$ = "".  If ESC is
  2016.               pressed CHR$(27) is always returned in ANS$.
  2017.  
  2018.                            TR% is the top row.  See MAKEWIND
  2019.  
  2020.                            LC% is the left column.  See MAKEWIND
  2021.  
  2022.                            ATTR% is the color designation.  See
  2023.               MAKEWIND.  Although it is permissible to set ATTR% > 127
  2024.               to make the border flash the text will not flash.
  2025.  
  2026.                            BORDER% is the window's border designation.
  2027.               Title boxes ( BORDER% > 42 ) are not permitted.  Set
  2028.               BORDER% to 0 for no window ( prompt only ). SEE THE
  2029.               BORDER DESIGNATION CHART.
  2030.  
  2031.               EXAMPLE OF A CALL TO GETANS:
  2032.  
  2033.               CALL GETANS ("Are you sure? Y/N", "YN", ANS$, 100, 100,
  2034.               240, 11)
  2035.               ( Above must be on one line. )
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.                                   28                                  
  2044.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.               A window will be generated with the text "Are you sure?
  2054.               Y/N"  printed in it.  With TR% and LC% set to 100 the
  2055.               window will be centered on the screen ( See MAKEWIND ).
  2056.               ATTR% = 240, therefore, the window will be white with
  2057.               black text and a black flashing border. The user may
  2058.               press the N, n, Y, y, or ESC keys to exit.  The key
  2059.               pressed will be returned to GETANS in the argument ANS$.
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.                                   29                                  
  2110.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.                          ***** INPUT ROUTINES *****
  2120.  
  2121.          Input routines provide users with the ability to generate a
  2122.          single input field ( INPTWIND ), or multiple input fields
  2123.          ( MULTINPT ).  Full editing is provided within each field.
  2124.          Up to 10 multiple input screens may be used, with each screen
  2125.          capable of supporting up to 100 fields. Fields may be defined
  2126.          as numeric, alpha/numeric, or date. Numeric fields may be
  2127.          designated 0 to 6 decimal places and optionally padded with
  2128.          leading zero's.  Numerous additional options are available.
  2129.  
  2130.          5.00 INPTWIND (PROMPT$,CODE$,TR%,LC%,WD%,ATTR%,RES$,RTRN$,BORDER%)
  2131.  
  2132.               Description:  Makes an input field, which may optionally
  2133.               be windowed. The area under the field or window is auto-
  2134.               matically saved. It is restored upon exiting the routine.
  2135.  
  2136.               Arguments:   PROMPT$ is the message which will be
  2137.               printed to the left of the input field or in the title
  2138.               box of the window, if one is specified.  If PROMPT$ is
  2139.               preceded by a "@" it will be centered in the title box.
  2140.  
  2141.                            CODE$ sets the type of input field and may
  2142.               may equal the following:
  2143.  
  2144.                       "A"  - Alpha/numeric.  All standard keys are
  2145.                              active.
  2146.  
  2147.                       "U"  - Alpha/numeric.  Upper case.
  2148.  
  2149.                       "L"  - Alpha/numeric.  Lower case.
  2150.  
  2151.                       "D"  - Date.  If a field is a date field it can
  2152.                              not be exited unless the date is valid or
  2153.                              the field is blank.  The number keys, "/"
  2154.                              and "-" are active.  Valid dates range
  2155.                              from 1/1/1980 to 12/31/2099.
  2156.  
  2157.               "P0" or "0"  - Numeric. The value of the string desig-
  2158.               "P1" or "1"    nates the number of decimal places that
  2159.               "P2" or "2"    will be returned, even if more are
  2160.               "P3" or "3"    entered.   The field can not be exited
  2161.               "P4" or "4"    unless the number, with the correct
  2162.               "P5" or "5"    number of decimal places will fit in the
  2163.               "P6" or "6"    the field. or the field is blank.  The
  2164.                              numeric,"-", and "." keys are active.
  2165.                              The minus sign will only print in the
  2166.                              first position of the field.  If a
  2167.                              decimal point is in the field another one
  2168.                              can not be entered until the previous one
  2169.                              is deleted.
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.                                   30                                  
  2176.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.                NOTE: A numeric field will be padded with leading zeros
  2186.                      if CODE$ contains a "P."
  2187.  
  2188.                 EXAMPLE:     CODE$ = "3P" --- This allows numeric
  2189.                              input.  It will return the data expanded,
  2190.                              or truncated to, 3 digits after the dec-
  2191.                              imal point and padded with leading zeros.
  2192.  
  2193.                            TR% is the top row of the field, or window.
  2194.               If a window is designated, TR% must equal 1 to 23.
  2195.               Without a window  TR% must equal 1 to 25.  Setting TR%
  2196.               to 100 centers the field, or window, top to bottom.
  2197.  
  2198.                            LC% is the left column.  If a window is
  2199.               designated, LC% must equal 1 to 76 ( 36 in 40 column
  2200.               mode ). With no window LC% must equal 1 to 79 ( 39 in
  2201.               40 column mode ). If LC% = 100  the field, or window, is
  2202.               centered left to right.  If LC% is set so the input
  2203.               field with a window, if specified, or with a prompt, if
  2204.               specified, will not fit on the screen an error will be
  2205.               reported.
  2206.  
  2207.                            WD% is the fields width.  A date field must
  2208.               have WD%=10 or WD%=8.  A numeric field requires WD% to
  2209.               be from the number of ( decimal places + 1 ) to 15, and
  2210.               for an alpha/numeric field WD% can range from 1 to the
  2211.               screen width minus 1 ( minus 4 if windowed ).
  2212.  
  2213.                            ATTR% is the window's and PROMPT$'s color.
  2214.               The color of the input field is the inverse of the
  2215.               window's color.  The field's foreground color is the
  2216.               same as the window's background color while the field's
  2217.               background has the same color as the windows foreground.
  2218.               SEE THE COLOR ATTRIBUTE CAHRT.  To make the field's
  2219.               foreground color high intensity, add 1000 to ATTR%.
  2220.  
  2221.               EXAMPLE:  ATTR% = 1160.  ( 1000 + 160 ) The "160"
  2222.               produces a flashing black on green window.  ( SEE THE
  2223.               COLOR ATTRIBUTE CHART. ).  The "1000" makes the field
  2224.               text high intensity green.
  2225.  
  2226.                            RES$ is the restrict string. It holds the
  2227.               allowable characters which can be entered in the input
  2228.               field.  RES$ IS IGNORED IF CODE$ IS NOT ALPHA/NUMERIC
  2229.               ("A").  IF CODE$ IS ALPHA/NUMERIC ("A") AND RES$ = ""
  2230.               ALL STANDARD ALPHA/NUMERIC KEYS ARE ALLOWABLE. (SEE
  2231.               SETINPT IN SECTION 5.01 FOR DETAILS.)
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.                                   31                                  
  2242.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.                            RTRN$ is the string passed to, and returned
  2252.               from the input field.  A numeric string can be converted
  2253.               to a number by using the VAL function.
  2254.  
  2255.               EXAMPLE:  IF RTRN$= "123.123" IT CAN BE CONVERTED TO A
  2256.               NUMBER (A) WITH THE STATEMENT:
  2257.  
  2258.                            A = VAL(RTRN$)
  2259.                            A now equals 123.123
  2260.  
  2261.                            BORDER% is the input windows border. ( SEE
  2262.              THE BORDER DESIGNATION CHART ). If BORDER% = 0 a single
  2263.              line input field ( no window ) is generated.  If BORDER%
  2264.              produces a title box window, PROMPT$ will printed in the
  2265.              title box.
  2266.  
  2267.  
  2268.          5.01 SETINPT ( SCRN%, COLWID%, EXIT$, INPT%(), INPT$(), ACTCOL% )
  2269.  
  2270.               Description: Defines a multi-field input screen, which
  2271.               will be called by MULTINPT.
  2272.  
  2273.               Arguments:   SCRN% is the number or the screen being
  2274.               defined.  SCRN% may range from 1 to 10.
  2275.  
  2276.                            COLWID% is the column width of the screen
  2277.               and must equal 40 or 80.
  2278.  
  2279.                            EXIT$ is the code for keys which will
  2280.               exit the multi-field input routine for the designated
  2281.               screen number.  To make the function keys active place
  2282.               their number "1","2" etc in EXIT$.   A "0" represents
  2283.               the F10 key, a "D" the PGDN key and a "U" the PGUP key.
  2284.  
  2285.               EXAMPLE: IF EXIT$ ="03U" THE F10, F3, OR PGUP KEYS WILL
  2286.               EXIT THE ROUTINE.
  2287.  
  2288.                            INPT%() and INPT$() hold the data
  2289.               representing the parameters for each field in the multi-
  2290.               field input screen.  Starting at INPT%(1) and INPT$(1),
  2291.               INPT%() AND INPT$() are as follows;
  2292.  
  2293.                            ------------ INPT%() ---------- -INPT$()-
  2294.                             1      2    3    4     5    6    1
  2295.               (Field #1)   CODE%, TR%, LC%, WD%, ATTR%, 99, RES$
  2296.               (Field #2)   ...... Repeat above for each field
  2297.                            9999 ( signals end of INPT%()/INPT$() )
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.                                   32                                  
  2308.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.               INPT%(1)=CODE% FOR FIELD 1, INPT%(7)=CODE% FOR FIELD 2
  2318.               INPT$(1)=RES$ FOR FIELD 2, INPT$(2)=RES$ FOR FIELD 2
  2319.  
  2320.  
  2321.                            CODE% is the code for type of input field
  2322.               and can be as follows;
  2323.  
  2324.               0 to 6 ----- The field is numeric with the indicated
  2325.               number of decimal places.
  2326.  
  2327.               10 to 16 --- The field is numeric with padded zeros.
  2328.               Subtract 10 to obtain the number of decimal places.
  2329.  
  2330.               7 ---------- The field is alpha/numeric.
  2331.               8 ---------- The field is a date field.
  2332.               17 --------- The field is alpha/numeric. (upper case)
  2333.               27 --------- The field is alpha/numeric. (lower case)
  2334.  
  2335.               Adding 100 to CODE% makes the field protected.  A
  2336.               protected field will be displayed but can not be
  2337.               edited.   A protected field can not be an Auto-advance
  2338.               or Auto-exit field.  If a protected field is defined as
  2339.               an Auto-exit or Auto-advance field the definition is
  2340.               ignored and the field remains a protected field.
  2341.  
  2342.               Adding 1000 to CODE% makes the field an Auto-advance
  2343.               field.  When the cursor reaches the end of an Auto-
  2344.               advance field, via typing a character, it moves to the
  2345.               next field.  ( User defined order. )
  2346.  
  2347.               Adding 10000 to CODE% makes the field an "Auto-exit
  2348.               always" field.   The multi-field input routine will be
  2349.               exited whenever the cursor is moved from an "Auto-exit
  2350.               always" field or .....
  2351.  
  2352.               Adding 20000 to CODE% makes the field an "Auto-exit on
  2353.               change" field.  The multi-field input routine will be
  2354.               exited  only when the data in the field is changed.
  2355.               This is useful if a field is part of a formula to
  2356.               calculate another fields value.
  2357.  
  2358.               EXAMPLE: If CODE%= 21027 THEN CODE% = 20000+1000+27.
  2359.               THE FIELD IS ALPHA/NUMERIC ( UPPER CASE ), AUTO-ADVANCE
  2360.               AND "AUTO-EXIT ON CHANGE".
  2361.  
  2362.                ** SEE THE MULTI-FIELD CODE CHART IN THE APPENDIX.**
  2363.  
  2364.                            TR%, LC%, and WD% are the same as in
  2365.               INPTWIND.
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.  
  2373.                                   33                                  
  2374.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.                            ATTR% is the fields color.
  2384.  
  2385.                            99 is a check and must follow the numeric
  2386.               data which defines each field.
  2387.  
  2388.                            RES$ defines the allowable characters
  2389.               in a restricted field.  If the field is not set to
  2390.               alpha/numeric by CODE%, RES$ is ignored.  Setting RES$ to
  2391.               "YN" and CODE% TO 17 ( UPPER CASE ) allows the field to
  2392.               respond to Y,y,N or n.  If CODE% = 7 ( UPPER AND LOWER
  2393.               CASE ) and RES$ ="YN" the field is restricted to Y or N.
  2394.               IF CODE%=27 ( LOWER CASE ) and RES$ ="YN" the field will
  2395.               not allow any characters.  If RES$ = "" the field is not
  2396.               restricted and will respond to characters predicated on
  2397.               the value of CODE%.
  2398.  
  2399.               NOTE: IT IS ONLY NECESSARY TO USE RES$ FOR NON-STANDARD
  2400.               FIELDS.  SET RES$ TO "" FOR NORMAL ALPHA/NUMERIC FIELDS
  2401.               OR THE RESULT WILL BE EXTRA CODE AND MEMORY USAGE.  IF
  2402.               THE FIELD IS STANDARD ALPHA/NUMERIC MAKE CODE% = 7 AND
  2403.               RES$ = "".  THIS WILL ALLOW UPPER/LOWER CASE ALPHA/NUM-
  2404.               ERIC INPUT.
  2405.  
  2406.                      EXAMPLE: RES$ = "0123456789-( )"
  2407.  
  2408.                      THIS RESTRICTS INPUT TO CHARACTERS INCLUDED IN
  2409.                      A PHONE NUMBER WITH THE AREA CODE.
  2410.  
  2411.                            ACTCOL% is the color attribute of the active
  2412.               input field.  Use ACTCOL% to make the active field a
  2413.               different color than the inactive fields.  If ACTCOL% = 0,
  2414.               ACTCOL% is ignored and the active field's color will not
  2415.               change.   ACTCOL% is adjusted to ACOL% MOD 128.
  2416.  
  2417.               -------------------------------------------------------
  2418.               'EXAMPLE OF A CALL TO SETINPT
  2419.  
  2420.               A% = 20: B% = 3            ' SET UP TEMPORARY ARRAYS FOR DATA.
  2421.               DIM INPT% (A%), INPT$(B%)  ' USE THIS METHOD SO ARRAY WILL BE
  2422.                                          ' DYNAMIC AND CAN BE DE-ALLOCATED
  2423.                                          ' LATER. DON'T USE DIM INPT%(20)
  2424.  
  2425.               FLD% = 1
  2426.               B% = 1                     ' ALWAYS START THE ARRAYS AT 1
  2427.               DO                         ' OR THE FIRST FIELD WILL BE
  2428.                 READ INPT%(B%)           ' LOST.
  2429.                 IF INPT%(B%)=9999 THEN EXIT DO   ' 9999 MARKS THE END
  2430.                 B% = B% + 1
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.                                   34                                  
  2440.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.                 FOR X% = 1 TO 5
  2450.                   READ INPT%(B%)         ' READ REMAINING NUMERIC DATA
  2451.                   B% =B% + 1             ' IN INPT%().  TR%,LC%,WD%
  2452.                 NEXT                     ' ATTR% AND THE CHECK (99).
  2453.                 READ INPT$(FLD%)         ' THEN READ INPT$() DATA FOR
  2454.                 FLD% = FLD% + 1          ' RESTRICTED FIELDS.
  2455.               LOOP
  2456.  
  2457.               DATA 0,1,1,15,112,99,""
  2458.               ' NUMERIC - TR%=1, LC%=1, WD%=15, ATTR%=7, CHECK MUST=99
  2459.               ' NOT RESTRICTED. THIS IS FIELD #1 (1st DATA STATEMENT)
  2460.  
  2461.               DATA 17,3,1,1,112,99,"YN"
  2462.               ' ALPHA/NUM ( UPPER CASE ) TR%=3, LC%=1, WD%=1, ATTR%=7
  2463.               ' CHECK MUST=99, RESTRICTED TO Y,N,y,or n.
  2464.               ' THIS FIELD #2 (2nd DATA STATEMENT)
  2465.  
  2466.               DATA 108,5,1,10,32,99,""
  2467.               ' PROTECTED DATE - TR%=5, LC%=1 WD%=10, ATTR%=32
  2468.               ' CHECK MUST = 99', NOT RESTRICTED
  2469.               ' THIS IS FIELD #3 (3rd DATA STATEMENT)
  2470.  
  2471.               DATA 9999
  2472.               ' 9999 MARKS THE END
  2473.  
  2474.               CALL SETINPT( 1, 80, "12", INPT%(), INPT$(), 15 )
  2475.  
  2476.               ERASE INPT%, INPT$       ' GET THE MEMORY BACK
  2477.  
  2478.  
  2479.  
  2480.               '------------------------------------------------------
  2481.               ' THE MULTI-FIELD INPUT SCREEN (#1) IS 80 COLUMNS WIDE
  2482.               ' AND WILL BE EXITED IF THE F1 OR F2 KEYS ARE PRESSED.
  2483.               ' THERE ARE 3 FIELDS AS PER THE DATA STATEMENTS. A CALL
  2484.               ' TO MULTINPT WILL DISPLAY THE FIELDS AND WAIT FOR
  2485.               ' INPUT. INPUT ENDS WHEN THE F1 OR F2 KEYS ARE PRESSED.
  2486.               ' THE ACTIVE FIELD WILL BE HIGH INTENSTIY WHITE ON BLACK.
  2487.               '-------------------------------------------------------
  2488.  
  2489.          5.02 MULTINPT ( SCRN%, FLD%, EXIT$, AUTOEXIT%, RTRN$() )
  2490.  
  2491.               Description: Displays input fields defined in a previous
  2492.               call to SETINPT.  Fields are available for full editing
  2493.               Returns edited strings to the calling program.
  2494.  
  2495.               Arguments:   SCRN% is the number ( 1 to 10 ) of the
  2496.               multi-field input screen to display.
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.                                   35                                  
  2506.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.                            FLD% is the active field ( the one with the
  2516.               cursor ) upon entering the procedure. It may range from
  2517.               1 to the last field as designated by SETINPT ( 3 in the
  2518.               example for SETINPT ).  Use FLD% to re-enter the routine
  2519.               in the same field that was active when it was exited.
  2520.               FLD% returns the active field when MULTINPT is exited.
  2521.  
  2522.                            EXIT$ is the key that was pressed to exit
  2523.               MULTINPT.  EXIT$ will be "F1" to "F10" , "PGUP", or
  2524.               "PGDN".  If EXIT$ = "VIEW" before calling MULTINPT the
  2525.               multi-Input Screen will be displayed with the values of
  2526.               RTRN$() in the appropriate fields.  Program execution
  2527.               will immediately return to the calling program.  EXIT$
  2528.               will = "AUTO" if MULTINPT is exited via an Auto-exit
  2529.               field.
  2530.  
  2531.                            AUTOEXIT% serves two purposes.
  2532.  
  2533.               1. Upon entering MULTINPT if AUTOEXIT% is set to zero,
  2534.               MULTINPT will update all fields.  If AUTOEXIT% is
  2535.               set from one to the last field number only the specified
  2536.               field is updated.  This allows quick exiting from, and
  2537.               re-entering to MULTINPT.
  2538.  
  2539.               2. When MULTINPT is exited AUTOEXIT% will be set to 0 if
  2540.               MULTINPT was not exited via an Auto-exit field.  If
  2541.               MULTINPT is exited via an "Auto-exit always" field or
  2542.               "Auto-exit on change" field and the field's data was
  2543.               changed AUTOEXIT% will hold the Auto-exit field number.
  2544.  
  2545.               NOTE: If the cursor is in an Auto-exit field and
  2546.               MULTINPT is exited via an exit key ( F1,F2.... ) EXIT$
  2547.               will not equal "AUTO".  It will equal the key pressed
  2548.               ( F1,F2 ... etc. ).  Check AUTOEXIT% to verify if the
  2549.               cursor was in Auto-exit field when MULTINPT was exited.
  2550.  
  2551.               If AUTOEXIT% is not zero then;
  2552.  
  2553.               A. The cursor was in an "Auto-exit always" field OR...
  2554.  
  2555.               B. The cursor was in an "Auto-exit on change" field
  2556.                  and the data in the field was changed.
  2557.  
  2558.               AUTOEXIT% will hold the Auto-exit field number in both
  2559.               cases A and B.
  2560.  
  2561.               If AUTOEXIT% is not 0 and EXIT$ = "VIEW" when entering
  2562.               MULTINPT, the field specified by the value of AUTOEXIT%
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.                                   36                                  
  2572.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.               will be updated and MULTINPT will be exited.  This
  2582.               method can be used to update any single field and exit.
  2583.  
  2584.                            RTRN$() is a string array that holds the
  2585.               data to be edited.  Elements of RTRN$() will be
  2586.               displayed in the appropriate fields.  RTRN$(1) will be
  2587.               displayed in field 1 and so on.  Make sure there is not
  2588.               a RTRN$(0) as it will not be displayed.  If a field is
  2589.               numeric, the number to be placed in it must be converted
  2590.               to a string.  Convert the number (A) to a string as
  2591.               follows:   RTRN$(2) = STR$(A)
  2592.  
  2593.               When MULTINPT is exited RTRN$() holds the data in it's
  2594.               edited state.
  2595.  
  2596.               Upon entering MULTINPT, if the field is designated as
  2597.               alpha/numeric and the string will not fit in the field
  2598.               it will be truncated to fit.  If the field is numeric
  2599.               and a number formatted to the correct number of decimal
  2600.               places will not fit in the field, "*"'s will be printed.
  2601.               This will not pose a problem if RTRN$() is initialized
  2602.               via MULTINPT, as MULTINPT will not allow the user to
  2603.               input data longer than the field's width.  If a numeric
  2604.               field is entered with an alpha string the string will
  2605.               print in the field. It is the programmer's responsibility
  2606.               to assure numeric fields contain numeric strings.  IF
  2607.               A FIELD IS NUMERIC WITH 4 DECIMAL PLACES SETTING THE
  2608.               FIELD TO EQUAL "DOG", WILL RESULT IN DOG.0000 BEING
  2609.               DISPLAYED!
  2610.  
  2611.               Use caution if a field is a result of calculation, as
  2612.               the result may be in exponential format.  EXAMPLE:
  2613.  
  2614.                      A = 1       B = 14      C = A/B
  2615.  
  2616.               STR$(C) = "7.142857E-02".  If the field is numeric with
  2617.               four decimal places and set to equal STR$(C) it will
  2618.               print as 7.1428, and not as .0714.
  2619.  
  2620.               To following routine corrects numbers in expoential form
  2621.               for both large and small numbers.  A$ is the numeric
  2622.               string to be displayed in a field.
  2623.  
  2624.               IF INSTR(3, A$, "+") THEN A$ = "9999999999999999"
  2625.               REM: THE NUMBER WAS TOO LARGE. ( EX: 2.2D+22 )
  2626.               REM: SET TO "9999999999999999" AND "*"'s WILL
  2627.               REM :BE DISPLAYED.
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.  
  2636.  
  2637.                                   37                                  
  2638.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.               IF INSTR(3, A$, "-") THEN
  2648.                  A# = VAL(A$): A# = A# + SGN(A#): A$ = STR$(A#)
  2649.                  IF ABS(A#) > 1 THEN
  2650.                     A$ = MID$(A$, INSTR(A$, "."))
  2651.                     IF A# < 1 THEN A$ = "-" + A$
  2652.                  ELSE
  2653.                     A$="0"
  2654.                  END IF
  2655.               END IF
  2656.               REM: THE NUMBER WAS TOO SMALL. IF A$ = "3.33D-4",
  2657.               REM: A$ WILL NOW = ".000333"
  2658.  
  2659.  
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.                                   38                                  
  2704.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.        ---------------------------------------------------------------
  2714.              FIELD EDITING FEATURES FOR "MULTINPT" AND "INPTWIND"
  2715.                   ( * = AVAILABLE FOR "MULTINPT" ONLY. )
  2716.        ---------------------------------------------------------------
  2717.        KEY                FUNCTION
  2718.  
  2719.        SPACE BAR       ERASES FIELD - IF IT IS THE FIRST KEY PRESSED.
  2720.  
  2721.        *UP ARROW       MOVES THE CURSOR FROM FIELD TO FIELD AS DETER-
  2722.        *DOWN ARROW     MINED BY THE ORDER DEFINED IN "SETINPT."  THE
  2723.                        DOWN ARROW MOVES THE CURSOR IN ASCENDING FIELD
  2724.                        ORDER. THE UP ARROW MOVES IT IN DESCENDING
  2725.                        FIELD ORDER.  PROTECTED FIELDS ARE SKIPPED.
  2726.  
  2727.        *CTRL END       MOVES THE CURSOR TO THE FIRST OR LAST FIELD AS
  2728.        *CTRL HOME      DESIGNATED BY THE ORDER DEFINED IN "SETINPT".
  2729.  
  2730.        *TAB            MOVES THE CURSOR FROM FIELD TO FIELD HORIZONT-
  2731.        *SHIFT TAB      ALLY. TAB MOVES LEFT TO RIGHT, SHIFT TAB MOVES
  2732.                        RIGHT TO LEFT. PROTECTED FIELDS ARE SKIPPED.
  2733.  
  2734.        CTRL E          ERASES THE FIELD.
  2735.  
  2736.        ESC             RETURNS THE FIELD TO IT'S PRE-EDITED STATE.
  2737.                        EXITS "INPTWIND" WITH PRE-EDITED STRING. WILL
  2738.                        DISPLAY PRE-EDITED STRING IN "MULTINPT".  ANY
  2739.                        ATTEMPT TO EXIT A FIELD CHANGES THE PRE-EDITED
  2740.                        TEXT TO THE DISPLAYED TEXT.
  2741.  
  2742.        ENTER           EXITS "INPTWIND".  SAME AS DOWN ARROW FOR
  2743.        RETURN          "MULTINPT".
  2744.  
  2745.        END             MOVES THE CURSOR TO THE FIRST OR LAST POSITION
  2746.        HOME            OF TEXT WITHIN A FIELD.
  2747.  
  2748.        BACKSPACE       DELETES THE CHARACTER TO THE LEFT OF CURSOR.
  2749.  
  2750.        DELETE          DELETES THE CHARACTER UNDER THE CURSOR AND
  2751.                        SHIFTS CHARACTERS LEFT.
  2752.  
  2753.        INSERT          TOGGLES FROM INSERT TO OVERSTRIKE MODE. IF MODE
  2754.                        IS OVERSTRIKE THE CURSOR IS LARGE. INSERT MODE
  2755.                        IS THE DEFAULT EVERY TIME A FIELD IS ENTERED.
  2756.  
  2757.        RIGHT ARROW     MOVES THE CURSOR LEFT OR RIGHT.  ACTS THE SAME
  2758.        LEFT ARROW      AS TAB OR SHIFT TAB FOR "MULTINPT" IF THE
  2759.                        CURSOR IN IN POSITION 1 AND THE LEFT ARROW IS
  2760.                        PRESSED, OR THE CURSOR IS AT THE END OF THE
  2761.                        TEXT AND THE RIGHT ARROW IS PRESSED.
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.                                   39                                  
  2770.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.                          *****  DIRECTORY ROUTINES *****
  2780.  
  2781.          Directory routines compliment features included with
  2782.          QuickBASIC and BASIC 7.+ ( PDS )..  Procedures to find the
  2783.          current disk,  current path, disk capacity, and disk space
  2784.          available are supplied with WINDOWS R-E-Z.  Also included are
  2785.          routines to find the directory of any disk or path.  In
  2786.          addition a file's size, date, time, and attributes can be
  2787.          found.
  2788.  
  2789.          6.00 GETDISK (DRIVE%)
  2790.  
  2791.               Description: Retrieves the default disk drive.
  2792.  
  2793.               Argument:    DRIVE% is the current drive.  DRIVE% = 1
  2794.               for drive A:, 2 for B:, 3 for C:, 4 for D:, etc.
  2795.  
  2796.  
  2797.          6.01 FINDPATH (PATH$)
  2798.  
  2799.               NOTE: ALWAYS TRAP FOR DISK ERRORS PRIOR TO CALLING THIS
  2800.               ROUTINE.  SEE SECTION " MAKING A DIRECTORY SCROLL
  2801.               WINDOW"
  2802.  
  2803.               Description: Retrieves the current path ( directory ).
  2804.  
  2805.               Argument:    PATH$ is the path in the format:
  2806.  
  2807.                      DRIVE:\SUB-DIRECTORY\SUB-DIRECTORY\....
  2808.  
  2809.               PATH$ always starts with the drive letter and always
  2810.               ends with a "\".
  2811.  
  2812.  
  2813.          6.02 SETDISK (DRIVE%, BADFLAG%)
  2814.  
  2815.               Description: Changes the default drive.
  2816.  
  2817.               Arguments:   DRIVE% is the drive designation.  DRIVE% =
  2818.               1 for drive A:, 2 for B:, 3 for C:, etc.
  2819.  
  2820.               BADFLAG% = 1 if DRIVE% is less than 1 or greater than
  2821.               the number of logical drives.  BADFLAG% = 0 if DRIVE% is
  2822.               in the range from 1 to the number of logical drives in
  2823.               the system.
  2824.  
  2825.               NOTE: A SYSTEM WITH A FLOPPY DRIVE FOR DRIVE A: AND A
  2826.               HARD DISK FOR DRIVE C: HAS 3 LOGICAL DRIVES.  THEREFORE,
  2827.               BADFLAG% WILL = 0 IF DRIVE% = 1 TO 3 EVEN THOUGH A
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833.  
  2834.  
  2835.                                   40                                  
  2836.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.  
  2844.  
  2845.               PHYSICAL DRIVE B: DOES NOT EXIST.  ATTEMPTS TO ACCESS
  2846.               DRIVE B: MAY RESULT IN THE DOS MESSAGE. "Place a disk in
  2847.               drive B: and press any key" BEING DISPLAYED.
  2848.  
  2849.  
  2850.          6.03 DISKSIZE (DRIVE%, SIZE&, FREE&)
  2851.  
  2852.               NOTE: ALWAYS TRAP FOR DISK ERRORS PRIOR TO CALLING THIS
  2853.               ROUTINE.  SEE SECTION " MAKING A SCROLL DIRECTORY
  2854.               WINDOW".
  2855.  
  2856.               Description: Retrieves disk space and disk free space.
  2857.  
  2858.               Arguments:   DRIVE% is the drive designation.  It
  2859.               follows the same rules as detailed in SETDISK.  The note
  2860.               for SETDISK applies.
  2861.  
  2862.               SIZE& is the size in bytes of disk space.
  2863.  
  2864.               FREE& is the size in bytes of free disk space.
  2865.  
  2866.               NOTE: THE ARGUMENTS FOR SIZE AND FREE SPACE ARE LONG
  2867.               INTEGERS.  ANY VARIABLE USED TO REPRESENT THEM MUST BE
  2868.               DESIGNATED AS A LONG INTEGER ( FOLLOWED BY A "&" SIGN )
  2869.               OR A PARAMETER MIS-MATCH WILL BE REPORTED.
  2870.  
  2871.  
  2872.          6.04 FINDDIR (PATH$, TYP$, FILE%)
  2873.  
  2874.               NOTE # 1: THE FOLLOWING MUST BE PLACED BEFORE ANY
  2875.               EXECUTABLE STATEMENTS IN ANY MODULE CALLING "FINDIR"
  2876.  
  2877.                 TYPE DIREC
  2878.                    SIZE AS LONG
  2879.                    DATE AS STRING * 10
  2880.                    TIME AS STRING * 6
  2881.                    ATTR AS INTEGER
  2882.                 END TYPE
  2883.                 COMMON SHARED /DIRECTORY/ DIREC$(), DIRINFO() AS DIREC
  2884.  
  2885.               NOTE # 2: ALWAYS TRAP FOR DISK ERRORS PRIOR TO CALLING
  2886.               THIS ROUTINE.  SEE SECTION " MAKING A SCROLL DIRECTORY
  2887.               WINDOW"
  2888.  
  2889.               Description:  Puts the directory listing of the
  2890.               specified path in an array, DIREC$().  If a long
  2891.               directory search is requested the files size, date, time
  2892.               and attributes are also placed in array, DIRINFO().  The
  2893.               arrays MUST be defined as explained above in NOTE # 1.
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.  
  2900.  
  2901.                                   41                                  
  2902.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.  
  2911.               Arguments:    PATH$ is the path for the directory
  2912.               listing search.  It must be in the same format as
  2913.               returned by the procedure FINDPATH.  It may be expanded
  2914.               to restrict the search.  Wildcards are permitted.
  2915.  
  2916.               EXAMPLE: IF PATH$ = "C:\TEST\*.BAS", THE SEARCH WILL
  2917.               FIND FILES IN DRIVE C:, SUB-DIRECTORY "TEST", WITH THE
  2918.               EXTENSION ".BAS".
  2919.  
  2920.               TYP$ designates the attributes of the files to include
  2921.               in the search.  An "L" in TYP$ tells FINDDIR to make a
  2922.               long directory search.  The file's size, date, time and
  2923.               attributes are found in a long directory search, in
  2924.               addition to the files name.  TYP$ may contain any
  2925.               combination of the following:
  2926.  
  2927.                            A - archived files
  2928.                            H - hidden files
  2929.                            S - system files
  2930.                            R - read only files
  2931.                            D - sub-directory listings
  2932.                            V - volume entry
  2933.                            O - no file attribute
  2934.                            L - long directory search - SEE ABOVE
  2935.  
  2936.               EXAMPLE:  IF TYP$ = "HS" ONLY HIDDEN AND SYSTEM FILES
  2937.               WILL BE FOUND.
  2938.  
  2939.               FILE% is the number of files found.  FILE% = 0 if no
  2940.               files were found.
  2941.  
  2942.               If files are found their names are placed in the array,
  2943.               DIREC$().  A long directory search places the file's
  2944.               size, date, time and attrtibute designation in
  2945.               DIRINFO().
  2946.  
  2947.               DIREC$(1) = The name of first file found.
  2948.               DIRINFO(1).SIZE = The size of the file.
  2949.               DIRINFO(1).DATE = The files creation or last update date.
  2950.               DIRINFO(1).TIME = The files creation or last update time.
  2951.               DIRINFO(1).ATTR = The files attribute designation.
  2952.  
  2953.               The following describes DIRINFO(1).ATTR;
  2954.  
  2955.               IF DIRINFO(1).ATTR AND 1 the file is a read only file.
  2956.               IF DIRINFO(1).ATTR AND 2 the file is a hidden file.
  2957.               IF DIRINFO(1).ATTR  AND 4 the file is a system file.
  2958.               IF DIRINFO(1).ATTR  AND 8 the entry is a volumn entry.
  2959.               IF DIRINFO(1).ATTR  AND 16 the entry is a sub-directory.
  2960.  
  2961.  
  2962.  
  2963.  
  2964.  
  2965.  
  2966.  
  2967.                                   42                                  
  2968.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.               IF DIRINFO(1).ATTR  AND 32 the files archived bit is set.
  2978.               IF DIRINFO(1).ATTR  = 0 the file has no attribute.
  2979.  
  2980.               NOTE:  WHEN FINDDIR IS CALLED THE ARRAY, DIREC$() IS
  2981.               AUTOMATICALLY DIMENSIONED TO THE NUMBER OF FILES FOUND.
  2982.               THE ARRAY, DIRINFO() IS ALSO DIMENSIONED TO THE NUMBER
  2983.               OF FILES FOUND, IF THE DIRECTORY SEARCH IS A LONG
  2984.               DIRECTORY SEARCH.  EACH FILE FOUND USES ABOUT 16 BYTES
  2985.               OF MEMORY PLUS AN ADDITIONAL 22 BYTES IF THE DIRECTORY
  2986.               SEARCH IS LONG.  TO RECLAIM THE MEMORY ( AFTER USING THE
  2987.               INFORMATION RETURNED BY THE CALL TO FINDDIR ) THE ARRAYS
  2988.               MUST BE ERASED VIA THE STATEMENT:
  2989.  
  2990.                            ERASE DIREC$, DIRINFO
  2991.  
  2992.  
  2993.  
  2994.  
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000.  
  3001.  
  3002.  
  3003.  
  3004.  
  3005.  
  3006.  
  3007.  
  3008.  
  3009.  
  3010.  
  3011.  
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023.  
  3024.  
  3025.  
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033.                                   43                                  
  3034.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.                   ***** MAKING A DIRECTORY SCROLL WINDOW *****
  3044.  
  3045.               REM: THIS EXAMPLE FINDS THE DIRECTORY LISTING OF
  3046.               REM: ARCHIVED FILES IN DRIVE A.  IT PUTS THE LISTING IN
  3047.               REM: A SCROLL WINDOW AND WAITS FOR THE SELECTION OF A
  3048.               REM: FILE.
  3049.  
  3050.               TYPE DIREC
  3051.                    SIZE AS LONG
  3052.                    DATE AS STRING * 10
  3053.                    TIME AS STRING * 6
  3054.                    ATTR AS INTEGER
  3055.               END TYPE
  3056.               COMMON SHARED /DIRECTORY/ DIREC$(), DIRINFO() AS DIREC
  3057.  
  3058.               CALL SETWIND(1,1,7,0,1)    ' INITIALIZE
  3059.  
  3060.               START:
  3061.               CLS
  3062.               ON ERROR GOTO DISKERROR    ' ALWAYS TRAP FOR DISK
  3063.                                          ' ERRORS.
  3064.  
  3065.               REM: AS TYP$ INCLUDES AN "A",THE  FOLLOWING CALL TO
  3066.               REM: FINDDIR PLACES ARCHIVED FILES, FROM DRIVE A:,
  3067.               REM: ("A:\"), IN DIREC$().  AS TYP$ INCLUDES AN "L" THE
  3068.               REM: FILES SIZE, DATE, TIME AND ATTRIBUTES ARE PLACED IN
  3069.               REM: DIRINFO().  FILE% HOLDS THE NUMBER OF FILES FOUND.
  3070.  
  3071.               TYP$ ="AL"
  3072.               CALL FINDDIR ("A:\", TYP$, FILE%)
  3073.  
  3074.               IF FILE% > 0 THEN       ' ONLY IF FILES EXISTED.
  3075.  
  3076.                   REM: MAKE A WINDOW  STATEMENT MUST BE ON 1 LINE
  3077.  
  3078.                   CALL MAKEWIND(1 ,"@Select file - Press ENTER",
  3079.                   100 ,100 ,30 ,10 ,15 ,101)
  3080.  
  3081.                   REM: MAKE IT AN AUTO-EXIT SCROLL WINDOW.
  3082.  
  3083.                   KIND$ ="A"                ' AUTO-EXIT FEATURE IS ON.
  3084.  
  3085.                   CALL SCRLWIND(DIREC$(), FILE%, KIND$, RTRN%, 0)
  3086.  
  3087.                   IF RTRN% <> 0 THEN
  3088.                       LOCATE 1,1
  3089.                       PRINT "FILE .......";DIREC$(RTRN%)
  3090.                       PRINT "SIZE........";DIRINFO(RTRN%).SIZE
  3091.                       PRINT "DATE........";DIRINFO(RTRN%).DATE
  3092.  
  3093.  
  3094.  
  3095.  
  3096.  
  3097.  
  3098.  
  3099.                                   44                                  
  3100.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.                       PRINT "TIME........";DIRINFO(RTRN%).TIME
  3110.                       PRINT "ATTRIBUTE...";DIRINFO(RTRN%).ATTR
  3111.                       ERASE DIREC$, DIRINFO
  3112.                    END IF
  3113.  
  3114.                    CALL RSTRWIND(1,1)        ' REMOVE THE WINDOW
  3115.  
  3116.                    IF RTRN%= 0 THEN GOTO START 'ESC WAS PRESSED
  3117.               ELSE             ' FILE% = 0 ( NO FILES WERE FOUND )
  3118.                    PRINT "NO FILES WERE FOUND"
  3119.               ENDIF
  3120.  
  3121.               ON ERROR GOTO 0             ' TURN OFF ERROR DETECTION
  3122.  
  3123.               END
  3124.  
  3125.               DISKERROR:
  3126.  
  3127.               REM: ERR = ERROR NUMBER. THIS ERROR HANDLING ROUTINE
  3128.               REM: WILL DETECT IF DISK IS NOT READY, NOT AVAILABLE,
  3129.               REM: OR PATH WAS BAD.
  3130.  
  3131.               SELECT CASE ERR
  3132.                  CASE 71
  3133.                     E$ = "DISK NOT READY"
  3134.                  CASE 68
  3135.                     E$ = "DISK NOT AVAILABLE"
  3136.                  CASE 76
  3137.                     E$ = "PATH NOT FOUND"
  3138.                  CASE ELSE
  3139.                     E$ = "UN-IDENTIFIED DISK ERROR"
  3140.               END SELECT
  3141.  
  3142.               REM: FOLLOWING MUST BE ON ONE LINE
  3143.  
  3144.               CALL GETANS("DISK ERROR: " + E$ + " Press any key.."
  3145.               ,"", "",100 ,100, 143, 1)
  3146.  
  3147.               RESUME START
  3148.  
  3149.  
  3150.          7.00 DOSOUND
  3151.  
  3152.               Description:  Makes the default sound ,or sound as
  3153.               specified by a previous call to SETWIND.
  3154.  
  3155.               Arguments:    None.
  3156.  
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.                                   45                                  
  3166.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.  
  3176.           ** NOTE: ALL NUMERIC VALUES MUST BE INTEGERS FOR ALL **
  3177.              PROCEDURES EXCEPT DISKSIZE. ( EX: A%, B%, DEFINT A-F )
  3178.  
  3179.                         PROGRAM FORMAT FOR WINDOWS R-E-Z
  3180.  
  3181.               1. LOAD QUICKBASIC WITH CORRECT LIBRARY.
  3182.  
  3183.                  - UNENHANCED VERSION:
  3184.  
  3185.                  EX: QB/L QB4UNEN.QLB  ( QB 4.00, 4.00b, 4.50 )
  3186.                      QBX/L PDSUNEN.QLB  ( BASIC 7.0, 7.1 - PDS )
  3187.  
  3188.                  - ENHANCED VERSION:
  3189.  
  3190.                  EX: QB/L QB4ALL.QLB  ( QB 4.00, 4.00b, 4.50 )
  3191.                      QBX/L PDSALL70.QLB  ( BASIC 7.0 - PDS )
  3192.                      QBX/L PDSALL71.QLB  ( BASIC 7.1 - PDS )
  3193.  
  3194.               2. DECLARE ALL SUB-ROUTINES.  THIS EXAMPLE USES THE
  3195.                  INCLUDE FILE ( DECLARE.INC ) CONTAINED IN THE
  3196.                  ENHANCED VERSION OF WINDOWS R-E-Z.
  3197.  
  3198.                  REM $INCLUDE: 'DECLARE.INC'
  3199.  
  3200.              ' 3. CALL SETWIND TO INITIALIZE WINDOW MEMORY
  3201.  
  3202.                  CALL SETWIND(1,1,7,0,1)     'FAST WINDOWS
  3203.                                              'SOUND DEFAULTS TO "CLICK"
  3204.                                              'SHADOW COLOR = GRAY
  3205.                                              'HIGH INTENSITY IS OK
  3206.                                              'PERIOD AS DECIMAL POINT
  3207.              ' 4. CALL SETPULL IF PULLDOWN WINDOWS ARE USED
  3208.  
  3209.                  BAR$ = "THIS IS A SAMPLE"         ' DEFINE MENUBAR
  3210.  
  3211.                  DIM PWIND$(250)                   ' SET TEMPORARY
  3212.                                                    ' ARRAY
  3213.                  TEMP%=0
  3214.                  WHILE PWIND$(TEMP%) <> "ENDPULL"
  3215.                     TEMP% = TEMP% + 1              ' ALWAYS START AT 1
  3216.                     READ PWIND$(TEMP%)             ' READ DATA FOR
  3217.                  WEND                              ' PULLDOWN WINDOWS.
  3218.  
  3219.                  CALL SETPULL (BAR$, PWIND$())     ' CALL SETPULL
  3220.                  ERASE PWIND$                      ' AND ERASE ARRAY
  3221.  
  3222.                  ' PULLDOWN WINDOW DATA
  3223.                  DATA HELLO,JOE,***
  3224.                  DATA HOW,ARE,YOU,***
  3225.                  DATA I,AM,FINE,***
  3226.  
  3227.  
  3228.  
  3229.  
  3230.  
  3231.                                   46                                  
  3232.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.                  DATA BYE,***
  3242.                  DATA ENDPULL
  3243.  
  3244.                  ON KEY(1) GOSUB PULL              ' MAKE THE F1 KEY
  3245.                                                    ' THE "HOT" KEY FOR
  3246.                                                    ' PULLDOWN WINDOWS
  3247.  
  3248.               '5. READ DATA FOR SCROLL WINDOW(S)
  3249.  
  3250.                  DIM LIST$(10)                     ' DIMENSION ARRAY
  3251.                  FOR X%= 1 TO 10                   ' AND READ SCROLL
  3252.                   READ LIST$(X%)                   ' WINDOW DATA
  3253.                  NEXT
  3254.  
  3255.                  DATA ONE, TWO, THREE, FOUR, FIVE  ' DATA FOR A SCROLL
  3256.                  DATA SIX, SEVEN, EIGHT, NINE, TEN ' WINDOW
  3257.  
  3258.  
  3259.               '6. READ DATA FOR MULTI-FIELD INPUT SCREEN(S)
  3260.  
  3261.                  A%=20
  3262.                  B%=3
  3263.                  DIM INPT%(A%),INPT$(B%)         ' TEMPORARY ARRAYS
  3264.  
  3265.                  TEMP% = 1                       ' ALWAYS START AT 1
  3266.                  FLD%=1
  3267.                  DO
  3268.                    READ INPT%(TEMP%)             ' READ CODE%.
  3269.                                                  ' IF CODE%=9999 DONE.
  3270.                    IF INPT%(TEMP%)=9999 THEN EXIT DO
  3271.                    TEMP%=TEMP%+1
  3272.                    FOR X%=1 TO 5                 ' READ REMAINING 5
  3273.                      READ INPT%(TEMP%)           ' NUMERIC VALUES IN
  3274.                                                  ' INPT%().
  3275.                      TEMP% = TEMP% + 1
  3276.                    NEXT
  3277.                    READ INPT$(FLD%)               ' READ FIELD DATA IN
  3278.                    FLD%=FLD%+1                    ' INPT$() - RESTRICT
  3279.                  LOOP                             ' DATA.
  3280.  
  3281.  
  3282.                  ' MULTI- FIELD INPUT DATA
  3283.  
  3284.                  DATA 0,1,1,15,7,99,""
  3285.                  DATA 11007,3,1,40,7,99,""
  3286.                  DATA 108,5,1,10,32,99,""
  3287.                  DATA 9999
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.  
  3296.  
  3297.                                   47                                  
  3298.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.                  CALL SETINPT( 1, 80, "12", INPT%(), INPT$(),0 ) ' SET INPUT
  3308.                                                                  ' SCREEN.
  3309.  
  3310.                  ERASE INPT%,INPT$             ' GET THE MEMORY BACK
  3311.  
  3312.              '7. ENTER THE PROGRAM
  3313.  
  3314.                  MAIN:
  3315.                  KEY (1) ON                 ' TURN ON "HOT" KEY AT
  3316.               '  .                          ' APPROPRIATE SPOT IN
  3317.               '  .                          ' PROGRAM.
  3318.               '  .                          ' WAIT FOR F1f
  3319.                  GOTO MAIN
  3320.  
  3321.                  REM  PULL IS A SUB ROUTINE WHICH IS ENTERED VIA THE
  3322.                  REM  F1 KEY BEING PRESSED.  THIS SUB DISPLAYS THE
  3323.                  REM  PULLDOWN WINDOW AND WAITS FOR AN ITEM TO BE
  3324.                  REM  SELECTED FROM SAME.  IF THE ESC KEY IS PRESSED
  3325.                  REM  THE PROGRAM RESUMES EXECUTION WHERE IT WAS
  3326.                  REM  INTERRUPTED BY THE F1 KEY.  IF AN ITEM IS
  3327.                  REM  SELECTED A ROUTINE IS EXECUTED.  AFTER EXECUT-
  3328.                  REM  ION THE PROGRAM CONTINUES AT MAIN.
  3329.                  REM  THIS IS A SUGGESTION FOR A METHOD TO USE PULL-
  3330.                  REM  DOWN WINDOWS.  ALTERNATE METHODS MAY BE USED,
  3331.                  REM  SUCH AS CALL "PULLDOWN" AT START OF PROGRAM.
  3332.                  REM  AND NOT USING A HOT KEY.
  3333.  
  3334.                  PULL:
  3335.                  KEY (1) OFF
  3336.                  CALL PULLDOWN (MENUITEM% , WINDITEM%, 112, 0, 11)
  3337.  
  3338.                  SELECT CASE MENUITEM%
  3339.  
  3340.                   CASE 1                      ' MENUBAR ITEM = THIS
  3341.                     SELECT CASE WINDITEM%
  3342.                       CASE 1                  ' HELLO
  3343.                '       .                      ' ROUTINE FOR HELLO
  3344.                '       .
  3345.                       CASE 2                  ' JOE
  3346.                '       .                      ' ROUTINE FOR JOE
  3347.                '       .
  3348.                     END SELECT
  3349.  
  3350.                   CASE 2                      ' MENUBAR ITEM = IS
  3351.                     SELECT CASE WINDITEM%
  3352.                       CASE 1                  ' HOW
  3353.                 '      .                      ' ROUTINE FOR HOW
  3354.                 '      .
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.  
  3362.  
  3363.                                   48                                  
  3364.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371.  
  3372.  
  3373.                       CASE 2                  ' ARE
  3374.                 '      .                      ' ROUTINE FOR ARE
  3375.                 '      .
  3376.                       CASE 3                  ' YOU
  3377.                 '      .                      ' ROUTINE FOR YOU
  3378.                 '      .
  3379.                     END SELECT
  3380.  
  3381.                   CASE 3                      ' MENUBAR ITEM = A
  3382.                     SELECT CASE WINDITEM%
  3383.                       CASE 1                  ' I
  3384.                 '      .                      ' ROUTINE FOR I
  3385.                 '      .
  3386.                       CASE 2                  ' AM
  3387.                 '      .                      ' ROUTINE FOR AM
  3388.                 '      .
  3389.                       CASE 3                  ' FINE
  3390.                 '      .                      ' ROUTINE FOR FINE
  3391.                 '      .
  3392.                     END SELECT
  3393.  
  3394.                   CASE 4                      ' MENUBAR ITEM = SAMPLE
  3395.                 '      .                      ' ROUTINE FOR SAMPLE
  3396.                 '      .                      ' ( OR BYE )
  3397.  
  3398.                   CASE ELSE                   ' MUST BE THE ESC
  3399.                     KEY (1) ON                ' KEY
  3400.                     RETURN MAIN
  3401.  
  3402.                  END SELECT
  3403.                     KEY (1) ON
  3404.                     RETURN MAIN                ' DONE WITH THE ROUTINE
  3405.                                                ' SELECTED FROM
  3406.                                                ' PULLDOWN WINDOWS
  3407.  
  3408.  
  3409.  
  3410.  
  3411.  
  3412.  
  3413.  
  3414.  
  3415.  
  3416.  
  3417.  
  3418.  
  3419.  
  3420.  
  3421.  
  3422.  
  3423.  
  3424.  
  3425.  
  3426.  
  3427.  
  3428.  
  3429.                                   49                                  
  3430.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.  
  3437.  
  3438.  
  3439.                            MAKING A CUSTOMIZED LIBRARY
  3440.                             ( Enhanced version only.)
  3441.  
  3442.               Users familiar with LINK and LIB utilities may prefer to
  3443.           create libraries outside of QuickBASIC's environment using
  3444.           the appropriate object files.  As individual assembly object
  3445.           files can be linked together to create smaller libraries
  3446.           this is the preferable method.  See the section "FILES" for
  3447.           a description of all files.
  3448.               The libraries ( QB4ALL.QLB, PDSALL70.QLB, PDSALL71.QLB,
  3449.           QB4ALL.LIB, PDSALL70.LIB and PDSALL71.LIB ) are complete and
  3450.           contain all of the procedures in WINDOWS R-E-Z.  If all of
  3451.           the procedures are not required in your program customized
  3452.           libraries using less memory may be made in the QuickBASIC
  3453.           environment as follows:
  3454.  
  3455.           For QB 4.00 and 4.00b:
  3456.  
  3457.           1. Load QuickBASIC using the command QB/L QB4ASM.  The file,
  3458.              QB4ASM.QLB, contains the assembly routines required by
  3459.              all of the other procedures.
  3460.  
  3461.           2. Load the module WIND_REZ.BAS.  ALL PROCEDURES EXCEPT
  3462.              THOSE IN DIRWIND.BAS REQUIRE THIS MODULE.  It contains
  3463.              the basic windowing routines.  If this is all your
  3464.              program requires select the Make library option from the
  3465.              Run menu in QuickBASIC (see your manual) to make the
  3466.              library. ( QB4ASM.LIB must be present.)
  3467.  
  3468.           3. Load any other modules your program requires.  IF YOU
  3469.              WANT TO USE PULLDOWN WINDOWS THE MODULES PULLDOWN.BAS
  3470.              AND SCROLL.BAS MUST BOTH BE LOADED.  All other
  3471.              modules may be loaded independent of each other.
  3472.              When all of the modules you will be using are loaded
  3473.              make the library as in step 2.
  3474.  
  3475.               Two libraries will be produced.  The library with the
  3476.           suffix .QLB is used in the QuickBASIC environment and the
  3477.           library with the suffix .LIB must be available to produce an
  3478.           executable file.  To use your new library ( assuming a name
  3479.           of NEWLIB.QLB ) exit QuickBASIC and reload with the command
  3480.           QB/L NEWLIB.
  3481.  
  3482.           For QuickBASIC version 4.50 and BASIC 7.+ ( PDS );
  3483.  
  3484.           Versions 4.5 of QuickBasic and BASIC 7.0+ ( PDS ) do not use
  3485.           the "full library" mode while linking.  Therefore it is not
  3486.           nesessary to build a customized library or link outside of
  3487.           the QuickBASIC environment to produce the smallest possible
  3488.           executable programs.
  3489.  
  3490.  
  3491.  
  3492.  
  3493.  
  3494.  
  3495.                                   50                                  
  3496.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  
  3503.  
  3504.  
  3505.                Some of the BASIC modules contain several procedures.
  3506.           If any of the procedures are not used in the program they
  3507.           may be deleted from the basic module to produce a smaller
  3508.           executable program.  EXAMPLE: WIND_REZ.BAS contains a
  3509.           procedure, LINEW, to print lines in a window.  If LINEW is
  3510.           not used delete it from the module to save memory.  Save the
  3511.           original module so it will not be lost.
  3512.  
  3513.  
  3514.  
  3515.  
  3516.  
  3517.  
  3518.  
  3519.  
  3520.  
  3521.  
  3522.  
  3523.  
  3524.  
  3525.  
  3526.  
  3527.  
  3528.  
  3529.  
  3530.  
  3531.  
  3532.  
  3533.  
  3534.  
  3535.  
  3536.  
  3537.  
  3538.  
  3539.  
  3540.  
  3541.  
  3542.  
  3543.  
  3544.  
  3545.  
  3546.  
  3547.  
  3548.  
  3549.  
  3550.  
  3551.  
  3552.  
  3553.  
  3554.  
  3555.  
  3556.  
  3557.  
  3558.  
  3559.  
  3560.  
  3561.                                   51                                  
  3562.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.  
  3570.  
  3571.                                      FILES
  3572.  
  3573.               The following files are included with WINDOWS R-E-Z.
  3574.           Files starting with "QB4" are for use with QB 4.00, QB 4.00b
  3575.           and QB 4.50. These files are not included with WINDOWS R-E-Z
  3576.           for BASIC 7.+ ( PDS ).  Files starting with "PDS" are for
  3577.           use with BASIC 7.+, ( PDS ) These files are not included
  3578.           with WINDOWS R-E-Z for QB 4.+.
  3579.  
  3580.           Library Files:
  3581.  
  3582.               - Library consisting of all assembly procedures.
  3583.  
  3584.                 *  QB4ASM.LIB --  For QuickBASIC 4.+
  3585.                 *  PDSASM.LIB --  For BASIC 7.+
  3586.  
  3587.               - QuickBASIC version of QB4ASM.LIB or PDSASM.LIB
  3588.  
  3589.                 *  QB4ASM.QLB --  For QuickBASIC 4.+
  3590.                 *  PDSASM.QLB --  For BASIC 7.+
  3591.  
  3592.               - Library consisting of ALL assembly and BASIC procedures.
  3593.  
  3594.                 *  QB4ALL.LIB --- For QuickBASIC 4.+
  3595.                 *  PDSALL70.LIB - For Basic 7.0
  3596.                 *  PDSALL71.LIB - For Basic 7.1
  3597.                **  QB4UNEN.LIB -- For QuickBASIC 4.+ ( unenhanced )
  3598.                **  PDSUNEN.LIB -- For BASIC 7.+ ( unenhanced )
  3599.  
  3600.               - QuickBASIC version of QB4ALL.LIB, PDSALL70.QLB or
  3601.                 PDSALL71.QLB.
  3602.  
  3603.                 *  QB4ALL.QLB --- For QuickBASIC 4.+
  3604.                 *  PDSALL70.QLB - For BASIC 7.0
  3605.                 *  PDSALL71.QLB - For BASIC 7.1
  3606.  
  3607.               - Library of ALL assembly and BASIC procedures without
  3608.                 error detection or window status.
  3609.  
  3610.                 *  QB4NER.LIB --- For QuickBASIC 4.+
  3611.                 *  PDSNER70.LIB - For BASIC 7.0
  3612.                 *  PDSNER71.LIB - For BASIC 7.1
  3613.  
  3614.  
  3615.  
  3616.  
  3617.  
  3618.  
  3619.  
  3620.          *  Not included with the unenhanced version of WINDOWS R-E-Z.
  3621.          ** Not included with the enhanced version of WINDOWS R-E-Z.
  3622.  
  3623.  
  3624.  
  3625.  
  3626.  
  3627.                                   52                                  
  3628.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.  
  3637.           - QuickBASIC version of QB4NER.LIB, PDSNER70.LIB or
  3638.             PDSNER71.LIB.
  3639.  
  3640.             *  QB4NER.QLB --- For QuickBASIC 4.+
  3641.             *  PDSNER70.QLB - For BASIC 7.0
  3642.             *  PDSNER71.QLB - For BASIC 7.1
  3643.  
  3644.           Object Files:
  3645.  
  3646.            *  QB4WIND.OBJ -- Object file of assembly windowing
  3647.            *  PDSWIND.OBJ    routines.
  3648.            *  QB4INPT.OBJ -- Object file of assembly input routines.
  3649.            *  PDSINPT.OBJ    "                                    "
  3650.            *  QB4INPT2.OBJ   "                                    "
  3651.            *  PDSINPT2.OBJ   "                                    "
  3652.            *  QB4DIR.OBJ --- Object file of assembly directory
  3653.            *  PDSDIR.OBJ     routines.
  3654.            *  QB4SCRL.OBJ -- Object file of assembly scroll routines.
  3655.            *  PDSSCRL.OBJ    "                                    "
  3656.  
  3657.  
  3658.           Basic Files:
  3659.  
  3660.               DEMO.BAS ----- Source code for demonstration program.
  3661.  
  3662.            *  INPTWIND.BAS - BASIC source code for routines in
  3663.            *  PULLDOWN.BAS   WINDOWS R-E-Z.
  3664.            *  SCROLL.BAS           "
  3665.            *  WIND_REZ.BAS         "
  3666.            *  DIRWIND.BAS          "
  3667.  
  3668.  
  3669.            NOTES:  1. All basic files are the same for QB 4.++ and
  3670.                       BASIC 7.+ ( PDS ) versions of WINDOWS R-E-Z.
  3671.  
  3672.                    2. All basic routines, except those in DIRWIND.BAS,
  3673.                       require the presence of the module WIND_REZ.BAS.
  3674.  
  3675.           Other Files:
  3676.  
  3677.               WIND_REZ.DOC - This document.
  3678.               DECLARE.INC -- INCLUDE file containing DECLARE
  3679.                              statements for all routines.
  3680.               ORDER.ME ----- Order form for additional copies of
  3681.                              WINDOWS R-E-Z.
  3682.               READ.ME  ----- Update information.
  3683.  
  3684.            *  QUICKREF.DOC - Quick reference guide.
  3685.  
  3686.  
  3687.  
  3688.  
  3689.           * Not included with the unenhanced version of WINDOWS R-E-Z.
  3690.  
  3691.  
  3692.  
  3693.                                   53                                  
  3694.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.                                      Errors
  3704.  
  3705.               The following is a listing of the errors WINDOWS R-E-Z
  3706.           will detect.
  3707.  
  3708.           ERROR #       DESCRIPTION
  3709.           ------------------------------------------------------------
  3710.  
  3711.           ERROR 0       There is no active window.  SCRLWIND, RESAVE
  3712.                         CLRWIND, PRINTW, LINEW, and NEWCOLOR require
  3713.                         an active window.
  3714.  
  3715.           ERROR 1       SETWIND has not been called to initialize
  3716.                         window memory.
  3717.  
  3718.           ERROR 2       A window number has been specified which is
  3719.                         out of range for the calling routine.  Window
  3720.                         number 20 is the maximum window number for all
  3721.                         routines.  Window number 1 is the minimim
  3722.                         window number for SAVEWIND, DELWIND, and
  3723.                         RSTRWIND.  Window number 0 is the minimum
  3724.                         window number for MAKEWIND and CHNGWIND.
  3725.  
  3726.           ERROR 3       The border designation is not valid for the
  3727.                         calling routine.  GETANS does not allow title
  3728.                         windows.  PULLDOWN does not allow title
  3729.                         windows and only allows right-bottom shadows.
  3730.                         SEE THE BORDER DESIGNATION CHART.
  3731.  
  3732.           ERROR 4       The window will not fit on the screen.  The
  3733.                         left column plus the window's width makes the
  3734.                         window too wide or the top row plus the number
  3735.                         of rows makes the window too tall.  The left
  3736.                         column and top row must be greater than 0.
  3737.                         GETANS makes a window with a width predicated
  3738.                         on the width of the prompt.  INPTWIND makes a
  3739.                         window with a width based on the length of the
  3740.                         prompt plus the width of the input field.
  3741.                         PULLDOWN windows have a width based on the
  3742.                         longest item in the pulldown window's list.
  3743.                         This error is displayed for INPTWIND and
  3744.                         GETANS if no window is specified ( BORDER%=0 )
  3745.                         and the width of the prompt and/or field will
  3746.                         not fit on the screen.
  3747.  
  3748.           ERROR 5       The shadow, as designated by the value of
  3749.                         BORDER%, will not fit on the screen.  If this
  3750.                         error is displayed the window will fit on the
  3751.                         screen but the shadow will not.
  3752.  
  3753.  
  3754.  
  3755.  
  3756.  
  3757.  
  3758.  
  3759.                                   54                                  
  3760.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767.  
  3768.  
  3769.           ERROR 7       A call was made to RESAVE when the active
  3770.                         window was window number 0.  RESAVE can only
  3771.                         resave active window 1 to 20.
  3772.  
  3773.           ERROR 8       A request was made to CHNGWIND to make the
  3774.                         active window a non-existent window or a
  3775.                         window saved via SAVEWIND.  The active window
  3776.                         can only be a window save by MAKEWIND.
  3777.  
  3778.           ERROR 11      A bad row number was specified in a call to
  3779.                         PRINTW or LINEW.  The row number must be
  3780.                         greater than 0.  PRINTW allows print on the
  3781.                         bottom border.  LINEW does not.  The string
  3782.                         specified in a call to PRINTW will not fit in
  3783.                         the window due to it's length or it's left
  3784.                         column ( start print ) position.
  3785.  
  3786.           ERROR 21      The array ( LIST$() ) in a call to SCRLWIND
  3787.                         has a lower dimension greater than 1 or an
  3788.                         upper dimension less then the number of
  3789.                         entries ( ENTRIES% ) in the list.
  3790.  
  3791.           ERROR 22      A call was made to SCRLWIND with less than one
  3792.                         entry ( ENTRIES% ).
  3793.  
  3794.           ERROR 23      A scroll window requires a minimum width of 5.
  3795.  
  3796.           ERROR 24      At least one of the strings in the list for a
  3797.                         scroll window ( SCRLWIND ) will not fit in the
  3798.                         window, allowing for a space on either side of
  3799.                         the string.
  3800.  
  3801.           ERROR 31      The menubar string specified in a call to
  3802.                         SETPULL is missing or has the wrong format.
  3803.  
  3804.           ERROR 32      The menubar string specified in a call to
  3805.                         SETPULL has over 10 items in it.  A space
  3806.                         between two characters is the separator for
  3807.                         the items.
  3808.  
  3809.           ERROR 33      The data supplied to SETPULL is in the wrong
  3810.                         format.  The end of each pulldown window must
  3811.                         be represented by "***" in the data stream.
  3812.                         The end for all pulldown windows must be
  3813.                         represented by "ENDPULL".  A pulldown window
  3814.                         entry is a null string.
  3815.  
  3816.  
  3817.  
  3818.  
  3819.  
  3820.  
  3821.  
  3822.  
  3823.  
  3824.  
  3825.                                   55                                  
  3826.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.           ERROR 34      Over 20 items are requested for an individual
  3836.                         pulldown window. The may occur if a pulldown
  3837.                         window separator ("***") is missing.
  3838.  
  3839.           ERROR 35      The menubar has less than 2 items in it.
  3840.                         There are no spaces between the items.
  3841.  
  3842.  
  3843.           ERROR 41      The requested width of in input field in
  3844.                         INPTWIND is out of range.  The maximum width
  3845.                         is 15 for numeric fields, the screens width
  3846.                         minus 4 for windowed ALPHA/NUMERIC fields or
  3847.                         the screens width minus 1 for un-windowed
  3848.                         ALPHA/NUMERIC fields.  The minimum width for a
  3849.                         numeric field is the number of decimal places
  3850.                         plus one.  The minimum width for an ALPHA-
  3851.                         NUMERIC field is 1.  A date field must have a
  3852.                         width of 8 or 10.
  3853.  
  3854.           ERROR 42      The field code in INPTWIND does not consist of
  3855.                         legal characters. ("0","1","2","3","4","5","6",
  3856.                          "A","L","U","D","P0","P1","P2","P3","P4","P5,
  3857.                         or "P6 )
  3858.  
  3859.           ERROR 51      The screen number in MULTINPT is less than one
  3860.                         or over 10.
  3861.  
  3862.           ERROR 52      The array ( RTRN$() ) specified in a call to
  3863.                         MULTINPT has a lower dimension of greater than
  3864.                         one or an upper dimension less than the number
  3865.                         of fields in the multi-field input screen.
  3866.  
  3867.           ERROR 53      The screen number in a call to MULTINPT was
  3868.                         not defined via a call to SETINPT.
  3869.  
  3870.           ERROR 54      The field number specified in call to MULTINPT
  3871.                         is greater than the number of fields in the
  3872.                         multi-field input screen or less than one.
  3873.                         The auto-exit field is greater than the number
  3874.                         of fields in the multi-field input screen or
  3875.                         less than 0.
  3876.  
  3877.           ERROR 55      The screen width when MULTINPT was called was
  3878.                         not the same as specified when the multi-field
  3879.                         input screen was defined by SETINPT.
  3880.  
  3881.           ERROR 61      The screen number in a call to SETINPT is less
  3882.                         than one or greater than 10.
  3883.  
  3884.  
  3885.  
  3886.  
  3887.  
  3888.  
  3889.  
  3890.  
  3891.                                   56                                  
  3892.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  
  3899.  
  3900.  
  3901.           ERROR 62      The screen width in a call to SETINPT is not
  3902.                         80 or 40.
  3903.  
  3904.           ERROR 63      The exit string ( EXIT$ ) in a call to SETINPT
  3905.                         is null or contains an illegal character.
  3906.                         Legal character are:  "1234567890UD".
  3907.  
  3908.           ERROR 64      The input data ( INPT%(), INPUT$() ) is not in
  3909.                         the correct format in a call to SETWIND.
  3910.  
  3911.           ERROR 65      Over 100 fields were defined in a call to
  3912.                         SETINPT.
  3913.  
  3914.           ERROR 66      Less than 2 fields were defined in a call to
  3915.                         SETINPT.
  3916.  
  3917.           ERROR 67      At least one field in a call to SETINPT has an
  3918.                         illegal field code.  SEE THE MULTI-FIELD CODE
  3919.                         CHART.
  3920.  
  3921.           ERROR 68      The field width is not appropriate for the
  3922.                         type of field specified in a call to SETINPT.
  3923.  
  3924.           ERROR 69      The left position plus the width of a field
  3925.                         defined in a call to SETINPT will not allow
  3926.                         the field to fit on the screen.  The row or
  3927.                         column position is less than one.  The row
  3928.                         position of a field is greater than 26.
  3929.  
  3930.           ERROR 70      All fields defined in a call to SETINPT are
  3931.                         protected fields.  No input is possible.
  3932.  
  3933.           ERROR 71      The cumulative total of restrict characters
  3934.                         for all fields for a multi-field input screen
  3935.                         defined via SETINPT is greater than 1023.
  3936.  
  3937.           ERROR 72      The number of characters in a restrict string
  3938.                         ( INPT$() ) for an individual field defined
  3939.                         in a call to SETINPT is greater than 255.
  3940.  
  3941.           ERROR 73      The array ( INPT$() ) in SETINPT, which
  3942.                         defines the field's  restrict strings is
  3943.                         dimensioned less than the number of fields in
  3944.                         the multi-field input screen or greater than 1.
  3945.  
  3946.  
  3947.  
  3948.  
  3949.  
  3950.  
  3951.  
  3952.  
  3953.  
  3954.  
  3955.  
  3956.  
  3957.                                   57                                  
  3958.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964.  
  3965.  
  3966.                                    APPENDIX I
  3967.  
  3968.                                Color Attribute Chart
  3969.  
  3970.           ATTRIBUTE                 BACKGROUND              FOREGROUND
  3971.  
  3972.           START     END
  3973.  
  3974.           0  ------ 15               BLACK                  NORMAL
  3975.           16 ------ 31               BLUE                   NORMAL
  3976.           32 ------ 47               GREEN                  NORMAL
  3977.           48 ------ 63               CYAN                   NORMAL
  3978.           64 ------ 79               RED                    NORMAL
  3979.           80 ------ 95               MAGENTA                NORMAL
  3980.           96 ------ 111              BROWN                  NORMAL
  3981.           112 ----- 127              LIGHT GRAY             NORMAL
  3982.           128 ----- 143              BLACK                  FLASHING
  3983.           144 ----- 159              BLUE                   FLASHING
  3984.           160 ----- 175              GREEN                  FLASHING
  3985.           176 ----- 191              CYAN                   FLASHING
  3986.           192 ----- 207              RED                    FLASHING
  3987.           208 ----- 223              MAGENTA                FLASHING
  3988.           224 ----- 239              BROWN                  FLASHING
  3989.           240 ----- 255              LIGHT GRAY             FLASHING
  3990.           -----------------------------------------------------------
  3991.           OFFSET FROM START                                 FOREGROUND
  3992.  
  3993.           0                                                 BLACK
  3994.           1                                                 BLUE
  3995.           2                                                 GREEN
  3996.           3                                                 CYAN
  3997.           4                                                 RED
  3998.           5                                                 MAGENTA
  3999.           6                                                 BROWN
  4000.           7                                                 LIGHT GRAY
  4001.           8                                                 DARK GRAY
  4002.           9                                                 LIGHT BLUE
  4003.           10                                                LIGHT GREEN
  4004.           11                                                LIGHT CYAN
  4005.           12                                                LIGHT RED
  4006.           13                                                LIGHT MAGENTA
  4007.           14                                                YELLOW
  4008.           15                                                WHITE
  4009.  
  4010.  
  4011.           EXAMPLE: If the attribute = 242 then the background color is
  4012.                    light gray and the foreground flashes.  The offset
  4013.                    from start = 242 - 240 or 2, so the foreground color
  4014.                    is green.
  4015.  
  4016.           NOTE: GETANS and SCRLWIND allow a flashing border only.
  4017.           CHNGPULL, PULLDOWN, AND MULTINPT will not allow a flashing
  4018.           border or text.
  4019.  
  4020.  
  4021.  
  4022.  
  4023.                                   58                                  
  4024.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.  
  4031.  
  4032.  
  4033.                                    APPENDIX II
  4034.  
  4035.                              Multi-field code chart
  4036.  
  4037.  
  4038.           The code for each field can be up to five digits long.  The
  4039.           digits are numbered 5,4,3,2 and 1, with 1 being the least
  4040.           significant digit and 5 the most significant digit.
  4041.  
  4042.           DIGIT NUMBER -------  5  4  3  2  1
  4043.  
  4044.           EXAMPLE CODE% ------  2  1  0  1  6
  4045.  
  4046.           - Digits 1 and 2 set the field type and can be:
  4047.  
  4048.           00  ------ Numeric - no decimal places.
  4049.           01 to 06 - Numeric - 1 to 6 decimal places
  4050.  
  4051.           10 ------- Numeric - no decimal places - padded with leading
  4052.                      zeros.
  4053.           11 to 16 - Numeric - 1 to 6 decimal places - padded with
  4054.                      leading zeros.
  4055.  
  4056.           07 ------- Alpha/numeric
  4057.           17 ------- Alpha/numeric -- UPPER CASE
  4058.           27 ------- Alpha/numeric -- lower case
  4059.  
  4060.           08 ------- Date
  4061.  
  4062.           - Digit 3 sets a protected field ( No entry ) and can be:
  4063.  
  4064.           0 -------- Field is NOT protected.
  4065.           1 -------- Field is protected.
  4066.  
  4067.           - Digit 4 sets an Auto-advance field and can be:
  4068.  
  4069.           0 -------- Field is NOT Auto-advance.
  4070.           1 -------- Field is Auto-advance.
  4071.  
  4072.           - Digit ---- 5 sets an Auto-exit field and can be:
  4073.  
  4074.           0 -------- Field is NOT Auto-exit.
  4075.           1 -------- Field is Auto-exit. ( Always )
  4076.           2 -------- Field is Auto-exit. ( On change only )
  4077.  
  4078.           EXAMPLE: IF CODE% = 21016 the field is decimal with padded
  4079.                    zero's, Auto-advance, and Auto-exit ( on change ).
  4080.  
  4081.           NOTE: If digit 3 is set to 1 (protected) digits 4 and 5 are
  4082.                 ignored .
  4083.  
  4084.  
  4085.  
  4086.  
  4087.  
  4088.  
  4089.                                   59                                  
  4090.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  
  4097.  
  4098.  
  4099.                                   APPENDIX III
  4100.                                Border Designations
  4101.  
  4102.         DIGIT NUMBER         3    2    1
  4103.         EXAMPLE BORDER%      1    2    1       ( 121 )
  4104.  
  4105.         Digit 1 = Border     Digit 2 = Shadow   Digit 3 = Title Box
  4106.  
  4107.         Example (121) = title box/ left bottom shadow/ single line border
  4108.         ------------------------------------------------------------------
  4109.                     :---Border---:          :------- Shadow -----------:
  4110.           Border    Single  Double   Title  Right   Left    Left  Right
  4111.           Value     Line    Line     Box    Bottom  Bottom  Top   Top
  4112.  
  4113.               0            No border, title box, or shadow
  4114.               1     X
  4115.               2             X
  4116.              10                              X
  4117.              11     X                        X
  4118.              12             X                X
  4119.              20                                     X
  4120.              21     X                               X
  4121.              22             X                       X
  4122.              30                                             X
  4123.              31     X                                       X
  4124.              32             X                               X
  4125.              40                                                    X
  4126.              41     X                                              X
  4127.              42             X                                      X
  4128.  
  4129.             100                       X
  4130.             101     X                 X
  4131.             102             X         X
  4132.             110                       X      X
  4133.             111     X                 X      X
  4134.             112             X         X      X
  4135.             120                       X             X
  4136.             121     X                 X             X
  4137.             122             X         X             X
  4138.             130                       X                     X
  4139.             131     X                 X                     X
  4140.             132             X         X                     X
  4141.             140                       X                            X
  4142.             141     X                 X                            X
  4143.             142             X         X                            X
  4144.           -------------------------------------------------------------------
  4145.           See individual routines for restrictions.
  4146.  
  4147.  
  4148.  
  4149.  
  4150.  
  4151.  
  4152.  
  4153.  
  4154.  
  4155.                                   60                                  
  4156.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  4157.  
  4158.  
  4159.  
  4160.  
  4161.  
  4162.  
  4163.  
  4164.  
  4165.                                    RESTRICTIONS
  4166.  
  4167.           ------------------------------------------------------------
  4168.                                UNENHANCED LIBRARY
  4169.                                ------------------
  4170.  
  4171.                    THE UNENHANCED LIBRARY IS OFFERED ON A TRIAL BASIS.
  4172.            IT MAY BE USED FOR EVALUATION.  EXECUTABLE PROGRAMS MADE
  4173.            FROM THE UNENHANCED LIBRARY MAY NOT BE DISTRIBUTED.  IF YOU
  4174.            DECIDE THE ROUTINES ARE USEFUL, REGISTRATION MAY BE
  4175.            ACCOMPLISHED BY VIRTUE OF SECURING THE ENHANCED VERSION.
  4176.            THE UNENHANCED LIBRARY MAY NOT BE ALTERED.  THE UNENHANCED
  4177.            LIBRARY MAY BE DISTRIBUTED, PROVIDED IT IS DISTRIBUTED WITH
  4178.            ALL OF THE FILES INCLUDED IN QWEZ40.ZIP OR PWEZ40.ZIP.
  4179.                   THE FILES, QWEZ40.ZIP OR PWEZ40.ZIP , MAY BE UP-
  4180.            LOADED IN THEIR ENTIRETY TO ANY PUBLIC OR PRIVATE  BULLETIN
  4181.           BOARD.  INDIVIDUAL FILES NOT BE UP-LOADED.
  4182.           ------------------------------------------------------------
  4183.                                 ENHANCED VERSION
  4184.                                 -----------------
  4185.  
  4186.                  ALL OF THE SOURCE CODE, OBJECT CODE, AND LIBRARIES
  4187.            INCLUDED IN WINDOWS R-E-Z IS COPYRIGHTED.  COPYING AND
  4188.            DISTRIBUTING ANY OF THE MATERIAL IS PROHIBITED.  PROGRAMS
  4189.            MADE USING ANY OF THE PROCEDURES FROM WINDOWS R-E-Z IN THE
  4190.            EXECUTABLE (.EXE ) FORM MAY BE DISTRIBUTED FREELY BY
  4191.            ORIGINAL PURCHASERS.
  4192.           ------------------------------------------------------------
  4193.                                 COPYRIGHT WARNING
  4194.                                 -----------------
  4195.  
  4196.                  EXTRANEOUS CODE HAS BEEN INSERTED IN THE LIBRARY
  4197.            FILES.   ANY PROGRAM MADE USING THE LIBRARY FILES IS
  4198.            DISTINGUISHABLE AS ORIGINATING FROM WINDOWS R-E-Z. ABUSE OF
  4199.            MY COPYRIGHT PRIVILEGES WILL NOT BE AMUSING TO ME.  I WILL
  4200.            TAKE APPROPRIATE ACTION IF COPYRIGHT INFRINGEMENT IS
  4201.            DISCOVERED.
  4202.           ------------------------------------------------------------
  4203.                                    DISCLAIMER
  4204.                                    ----------
  4205.  
  4206.               ANY LOSS INCURRED FROM THE USE OF THE PROCEDURES CON-
  4207.           TAINED IN WINDOWS R-E-Z, OR ANY LOSS BELIEVED TO BE CAUSED
  4208.           FROM THE PROCEDURES CONTAINED IN WINDOWS R-E-Z IS NOT THE
  4209.           RESPONSIBILITY OF CONNECT SOFTWARE.  USERS OF WINDOWS R-E-Z
  4210.           ASSUME FULL RESPONSIBILITY FOR THE USE OF ANY PROCEDURES
  4211.           CONTAINED WITHIN.
  4212.           ------------------------------------------------------------
  4213.  
  4214.  
  4215.  
  4216.  
  4217.  
  4218.  
  4219.  
  4220.  
  4221.                                   61                                  
  4222.  Copyright (c) 1988,1989,1990  By:CONNECT Software  All rights reserved.
  4223.  
  4224.